我目前使用的绘图算法:
a_max = Pi*2 (float)(num_segments - 1.0f)/(float)num_segments;
for (unsigned int i = 0; i<=num_segments;i++)
{
const float a = (float)i / (float)num_segments * a_max;
SetPixel(centre.x + cos(a) *radius, centre.y +sin(a) *radius);
}
工作正常,但它开始绘制(centre.x + radius,centre.y)。我想让它从顶部开始,因为我想绘制一个指南针,零度位于顶部,而不是在右边,这样我就不必做出一个hacky解决方案。
答案 0 :(得分:0)
在开始绘图之前尝试向左旋转90度,这应该为你解决。
答案 1 :(得分:0)
指南针不仅从&#34; north&#34;开始。而不是&#34; east&#34;但也顺时针而不是逆时针。
对于这种情况,只需交换sin(a)
和cos(a)
:
x = centre.x + sin(a) * radius
y = centre.y + cos(a) * radius