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

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

(原谅我糟糕的修图)

替代文本 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);
}

我知道这很简单,但再说一次,我对绘图还很陌生。有什么帮助吗?

谢谢 乔治

有帮助吗?

解决方案

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

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 个像素。

其他提示

private Point GetCoordinate(float angle, int distance)
{
  float x = cos(angle) * distance;
  float y = sin(angle) * distance;
  return new Point(x, y);
}

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

一般来说:

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

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

学习 勾股定理. 。然后 这个线程 应该有更具体的细节给你。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top