【发布时间】:2009-03-23 16:57:06
【问题描述】:
我想这是一个简单的问题,但我当前的代码得到了一些奇怪的结果,而且我没有数学背景来完全理解原因。我的目标很简单,如标题所述:我只想找到与中心点有一定距离和角度的点。
我当前的代码:
Point centerPoint = new Point ( 0, 0 );
Point result = new Point ( 0, 0 );
double angle = 0.5; //between 0 and 2 * PI, angle is in radians
int distance = 1000;
result.Y = centerPoint.Y + (int)Math.Round( distance * Math.Sin( angle ) );
result.X = centerPoint.X + (int)Math.Round( distance * Math.Cos( angle ) );
一般来说,这似乎相当合理,但我在不同的地方遇到了问题,最明显的是当角度对应于负 x 和 y 轴上的点时。很明显我做错了什么——想想那是什么?
更新:这是我的错误,这段代码工作正常——少数不工作的异常值实际上是由于计算 1.5PI 的角度存在错误。我以为我已经检查得足够好,但显然没有。感谢大家的时间,希望上面的工作代码对其他人有帮助。
【问题讨论】:
-
你的意思是“我在不同的地方遇到问题”?
-
是否故意不使用 centerPoint?不应该将 centerPoint.X 和 .Y 添加到结果中吗?
-
你能提供一个问题的例子吗?
-
在你描述你的结果究竟出了什么问题之前,我不认为你会得到更多的结果。
-
请不要将距离称为 X,将角度称为 Y。这是违反直觉的。距离是你的半径,角度是你的……角度。