如何将绘制2D圆形的OpenGL代码调整为可绘制椭圆的代码
OpenGL圆形绘制代码改椭圆方案
圆形的绘制逻辑是x、y两个方向使用相同半径缩放三角函数计算结果,椭圆只需要将两个方向的半径拆分为独立参数即可,具体修改如下:
修改步骤
- 调整函数参数:把原函数的单个半径参数
r拆分为水平半轴长度rx和垂直半轴长度ry两个入参,函数名可同步修改为ellipse更贴合功能 - 调整顶点计算逻辑:x方向坐标用rx乘以cos计算,y方向坐标用ry乘以sin计算
修改后完整代码
void ellipse(int n, int x, int y, int rx, int ry) { double inc = 2 * PI / (double)n; glBegin(GL_POLYGON); for (double theta = 0.0; theta <= 2 * PI; theta += inc) { glVertex2i(rx * cos(theta) + x, ry * sin(theta) + y); } glEnd(); }
补充说明
- 参数n是椭圆的采样点数,数值越高边缘越平滑,一般取值30以上就能得到不错的显示效果
- 当rx和ry取值相等时,该函数效果和原有圆形绘制函数完全一致,可以兼容原圆形绘制需求
- 如果需要绘制空心椭圆,只需要把
GL_POLYGON改成GL_LINE_LOOP即可
内容的提问来源于stack exchange,提问作者정수정
相关产品推荐
相关产品推荐

