本文主要是介绍OpenCV 学习笔记-day16 正多边形绘制demo,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
OpenCV 学习笔记
- day16 随机数与随机颜色
day16 随机数与随机颜色
给定边数n,中点坐标Point p;p.a(横坐标),p.b(纵坐标)和中点到顶点的距离d, 来绘制多边形
首先确定多边形每一条边的旋转角度 angle,并转成弧度制,这个角度指的是中点到顶点连线与x轴的夹角
double angle = 360.0 / n / 180.0PI;
找到顶点坐标与旋转角度和中心点坐标的关系(注意第一次的旋转角度为0)
for (int i = 0; i < n; i++)
{
Point p;
p.x = a + dcos(iangle-45.0 / 180.0PI);
p.y = b + dsin(iangle-45.0 / 180.0*PI);
pts_4.push_back( p );
}
定义一个 Point类型的vector,将每个旋转后的坐标 p push_back进去
pts_4.push_back( p);
记得一定要有封口的坐标数据,故将第一个获取的坐标再push_back进去一次
pts_4.push_back(pts_4[0]);
最后利用polylines绘制
polylines(duobainxing, pts_4, true, Scalar(0, 0, 255), 2, 8, 2);
void QuickDemo::polygon_drawing_demo_2()
{int n;//边数int d;//多边形中心点到角的距离int a, b;//多边形中心点的坐标std::cout << "请输入多边形的边数:" << std::endl;std::cin >> n;std::cout << "请输入多边形中心点的坐标:" << std::endl;std::cin >> a >> b;std::cout << "请输入多边形中心点到角的距离:" << std::endl;std::cin >> d;double angle = 360.0 / n / 180.0*PI;std::vector<Point> pts_4;for (int i = 0; i < n; i++){Point p;p.x = a + d*cos(i*angle);p.y = b + d*sin(i*angle);pts_4.push_back(p);}pts_4.push_back(pts_4[0]);Mat duobainxing = Mat::zeros(Size(512, 512), CV_8UC3);polylines(duobainxing, pts_4, true, Scalar(0, 0, 255), 2, 8, 2);imshow("多边形绘制", duobainxing);
}
这篇关于OpenCV 学习笔记-day16 正多边形绘制demo的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!