2

我正在开发绘制随机路径的 XNA 应用程序。不幸的是,我与图形脱节,所以我有点卡住了。我的应用程序需要执行以下操作:

  1. 从我的原点(0,0)选择一个随机角度,这很简单。
  2. 以上面找到的角度,相对于该原点画一个圆,距离 16 像素(或我指定的任何距离)。

(请原谅我可怕的Photoshop)

替代文字 http://www.refuctored.com/coor.png

(16,16) 处的第二个圆圈表示距离我的原点 16 像素的 45 度角。

我想要一种方法,在该方法中我传递我的距离和角度,返回一个点来绘制图形。IE

private Point GetCoordinate(float angle, int distance)
{
   // Do something.
   return new Point(x,y);
}

我知道这很简单,但是很遗憾,我对绘图很不了解。有什么帮助吗?

谢谢,乔治

4

4 回答 4

5

如果角度以度为单位,请先执行以下操作:

angle *= Math.PI / 180;

然后:

return new Point(distance * Math.Cos(angle), distance * Math.Sin(angle));

顺便说一句,(16, 16) 处的点距离原点不是 16 像素,而是 sqrt(16^2 + 16^2) = sqrt(512) =~ 22.63 像素。

于 2010-03-26T19:40:36.103 回答
1
private Point GetCoordinate(float angle, int distance)
{
  float x = cos(angle) * distance;
  float y = sin(angle) * distance;
  return new Point(x, y);
}

请注意,三角函数可能采用弧度。如果您的角度以度为单位,则除以 180/Pi。

于 2010-03-26T19:42:07.697 回答
0

一般来说:

x = d * cos(theta)
y = d * sin(theta)

其中d是到原点的距离,theta是角度。

于 2010-03-26T19:41:09.277 回答
0

学习勾股定理。那么这个线程应该为您提供更具体的细节。

于 2010-03-26T19:41:39.180 回答