我正在开发一款游戏并想办法只使用线条来创建圆形轮廓。
所以我有一个像这样的图形功能
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)
}
}
绘制像这样的圆形轮廓所需的三角法是我难以接受的部分...任何帮助将不胜感激谢谢。
答案 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)
将绘制圆圈的上半部分并且琐碎地否定该值以绘制下半部分。进一步的改进是要注意,这两个区域是彼此的镜像,因此您可以轻松计算单个象限,然后否定这些值。