如何在open gl es android中绘制开放式圆圈

时间:2012-08-02 09:47:38

标签: android opengl-es

我需要绘制一个开放式圆圈,如下图所示 http://i49.tinypic.com/254y5bs.png 在图像中,M的长度应大于N,并且线M和N的起点是圆的中心。如何从N的终点到M绘制圆弧,使弧形看起来呈线性。  我正在使用以下代码绘制圆圈

    for (int nR = N_IN_DEGREE; nR < M_IN_DEGREE && nCount < 360; nR++) 
    { 
    float fX = (float) Math.sin((float) nR * (Math.PI / 180)) + nR * 0.0008f; 
    float fY = (float) Math.cos((float) nR * (Math.PI / 180)); 
    stVertexArray[nCount * 2] = fX; 
    stVertexArray[nCount * 2 + 1] = fY; 
    nCount++;
    } 

我从角度N_IN_DEGREE到M_IN_DEGREE得到开口圆圈。但是当我将fX的值增加nR * 0.0008f时,整个圆圈仅绘制350度,但我想要360度。 。请运行代码并查看..我的要求是我需要从单个点绘制2行n(长度0.8)和行m(长度= 1)并从n的终点到m的终点绘制一个弧并用一种颜色填充弧线。

1 个答案:

答案 0 :(得分:0)

我无法运行您的代码,因为没有足够的信息,我无法关注您的代码。

但这是基本的想法,在python中实现。

import math

def genc(r1, r2, t1, t2, n):
    dr = (r2 - r1)/n
    dt = (t2 - t1)/n
    x = []
    y = []
    for k in range(n):
        r = r1 + k*dr
        t = t1 + k*dt
        x.append(r*math.cos(t))
        y.append(r*math.sin(t))
    return [x, y]

这是输出(使用matplotlib绘制)

In [43]: a = circ.genc(1.0, 0.8, math.pi/2, 2*math.pi, 60)

In [44]: plot(a[0], a[1],'ro')
Out[44]: [<matplotlib.lines.Line2D at 0xb9285d0>]

enter image description here