C ++使用多行创建圆的轮廓

时间:2017-09-12 18:13:12

标签: c++ geometry trigonometry lines angle

我正在开发一款游戏并想办法只使用线条来创建圆形轮廓。

所以我有一个像这样的图形功能

void drawLine2D(float starX, float startY, float endX, float endY);

这将从起始2D坐标到结束2D坐标绘制一条线。

所以例如,如果我要调用这个函数

drawLine2D(0, 0, 10, 10);

一行将从Vector2D(0, 0)提取到Vector2D(10, 10)

所以我在思考,我知道可以使用多行创建一个圆形轮廓,因此它看起来像一个圆圈。我只是在数学方面遇到了一些问题。这就是我设想我的圆形轮廓功能的方式

void drawCricleOutline(float circleCenterPointX, float circleCenterPointY, int circleSize)
{
    //circleSize will scale how big the circle will be
    for(int i = 0; i < circleSize; i++)
    {
        drawLine2D(magicValueX1, magicValueY1, magicValueX2, magicValueY2)
    }
}

绘制像这样的圆形轮廓所需的三角法是我难以接受的部分...任何帮助将不胜感激谢谢。

2 个答案:

答案 0 :(得分:1)

phi 的正弦和余弦的一种可能定义分别是单位终点的 y x 坐标角度 phi 的圆弧。换句话说,你正在寻找这个:

pointOnCircle.x = cos(angle) * radius + centre.x;
pointOnCircle.y = sin(angle) * radius + centre.y;

答案 1 :(得分:0)

绘制圆圈有两种主要方法。一种是通过在 n中使用x = r * cos(angle)x = r * sin(angle)在0到360度(或0到2 Pi弧度)上的 n 线段来近似它步骤。另一个(更常见的是一个)是使用圆形公式x^2 + y^2 = r^2并从一侧到下一侧绘制像素。 y = sqrt(r^2 - x^2)将绘制圆圈的上半部分并且琐碎地否定该值以绘制下半部分。进一步的改进是要注意,这两个区域是彼此的镜像,因此您可以轻松计算单个象限,然后否定这些值。