【问题标题】:CImg how to draw Polygon from given x,y co-ordinates?CImg如何从给定的x,y坐标绘制多边形?
【发布时间】:2013-09-20 10:10:29
【问题描述】:

我正在尝试从 5 个点绘制一个封闭的多边形,我正在尝试使用以下代码:

CImg<float> img(800,800,1,3);
float red[] = {1.0f,0.0f,0.0f};
CImg<int> points(5,2);
int thePoints[] = {40,40,40,200,100,180,120,100,100,40};
int *iterator = thePoints;
cimg_forXY(points,x,y)
    points(x,y) = *iterator++;
img.draw_polygon(points,red).display();

我试图按 ccw 顺序给出点,但是我没有得到预期的多边形。 我得到的是这样的:

如何按预期生成多边形?如何将积分作为输入? ccw 或 cw 顺序或任意顺序?

【问题讨论】:

    标签: cimg


    【解决方案1】:

    您实际上错误地定义了变量points。应该这样填写:

    cimg_forX(points,i) { points(i,0) = *(iterator++); points(i,1) = *(iterator++); }
    

    可以按顺时针或逆时针顺序指定点。

    【讨论】:

    • 非常感谢,它成功了,但您确定积分可以是任意顺序吗?我尝试在中间插入点 (40,40),但多边形有所不同。我认为这些点应该遵循 ccw/cw 顺序。
    猜你喜欢
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 2014-08-19
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    相关资源
    最近更新 更多