-1

我需要画一个开放式圆圈,如下图所示 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的端点绘制一条弧并填充弧线也有颜色。。

4

1 回答 1

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>]

在此处输入图像描述

于 2012-08-09T12:03:00.283 回答