如何绘制圆的一部分(Opengl / GLFW)

时间:2013-11-09 18:36:31

标签: c++ opengl glfw

我试图仅绘制一个3d圆的扇区/部分 - 给出2个角度(开始,结束),中心的坐标,圆的半径和宽度。 我在Photoshop中画了什么结果必须是这样的。 sector of a circle

你能帮我这么做吗(2d例子,1条简单的曲线,也适用)?只是想了解如何做到这一点......

。抱怨英语不好

1 个答案:

答案 0 :(得分:1)

在给定半径,中心(x0 / y0)和角度(弧度)的情况下计算圆上点的公式

float x = radius * cos(angle) + x0;
float y = radius * sin(angle) + y0;

使用它来构建相应的三角形条(参见例如http://en.wikipedia.org/wiki/Triangle_strip):

float[] coordinates = new float[steps * 3];
float t = start_angle;
int pos = 0;
for (int i = 0; i < steps; i++) {
  float x_inner = radius_inner * cos(t) + x0;
  float y_inner = radius_inner * sin(t) + y0;

  float x_outer = radius_outer * cos(t) + x0;
  float y_outer = radius_outer * sin(t) + y0;

  coordinates[pos++] = x_inner;
  coordinates[pos++] = y_inner;
  coordinates[pos++] = 0f;

  coordinates[pos++] = x_outer;
  coordinates[pos++] = y_outer;
  coordinates[pos++] = 0f;

  t += (end_angle - start_angle) / steps;
}

// Now you need to hand over the coordinates to gl here in your preferred way,
// then call glDrawArrays(GL_TRIANGLE_STRIP, 0, steps * 2);