我是洋葱啊 2015-05-07 05:00 采纳率: 45.5%
浏览 836

计算机图形学OpenGL的问题,急求大神指点

用多边形逼近算法花了一个多边形,然后需要修改一个点的坐标,让其不规则,请问如何修改一个点的坐标?逼近算法如下:
void COpenGLView::BiJin(int radius,Ploygon *ploygon)
{
int i,n;
float x,y,xnew,ynew,alfa,co,si;
alfa=2*acos(((float)radius-DELTA)/(float)radius);
n=(int)(2*3.14159/alfa);
alfa=2*3.14159/n;
ploygon->pointNum=n;
pointnumber=n;
ploygon->vertices=(Point *)malloc(n*sizeof(Point));
x=0.0;
y=(float)radius;
ploygon->vertices[0].x=0;
ploygon->vertices[0].y=radius;
co=cos(alfa);
si=sin(alfa);
SetPixel(ploygon->vertices[0].x,ploygon->vertices[0].y,1,0,0);
for(i=1;i {
xnew=co*x-si*y;
ynew=si*x+co*y;
x=xnew;
y=ynew;
ploygon->vertices[i].x=(int)(x+0.5);
ploygon->vertices[i].y=(int)(y+0.5);
SetPixel(ploygon->vertices[i].x,ploygon->vertices[i].y,1,0,0);
glColor3f(1,0,0);
glLineWidth(1.0f);
glBegin(GL_LINES);
glVertex2f(ploygon->vertices[i-1].x,ploygon->vertices[i-1].y);
glVertex2f(ploygon->vertices[i].x,ploygon->vertices[i].y);

glEnd();
}
glColor3f(1,0,0);
glLineWidth(1.0f);
glBegin(GL_LINES);
glVertex2f(ploygon->vertices[i-1].x,ploygon->vertices[i-1].y);
glVertex2f(ploygon->vertices[0].x,ploygon->vertices[0].y);

glEnd();
}
然后是扫描线填充,调用这个算法:
BiJin(radius,ploygon);//改变一个点
老师说只需要在这条语句后边改变任意点的坐标,然后再用扫描线填充。可是不知道怎么变啊,这些点不是整体画出来的吗?求指教

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
    • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题
    • ¥15 slam rangenet++配置
    • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 保护模式-系统加载-段寄存器
    • ¥15 电脑桌面设定一个区域禁止鼠标操作
    • ¥15 求NPF226060磁芯的详细资料