如何找到一个角度在同一个圆上的点?

时间:2010-10-28 15:10:10

标签: c# .net math

我有以下设置:

alt text http://img840.imageshack.us/img840/1376/ex1y.jpg

我知道P1,P2和角度α,现在我如何计算P3的坐标? (注意:P3与原点P1和半径P1P2在同一圆上)

蓝线表示坐标系

5 个答案:

答案 0 :(得分:7)

上面从维基百科所述的公式可用于旋转矢量P1-> P2(V12)。

V12 = [0, -100]

旋转时(注意图中α为-30度),矢量P1-> P3变为

x' = V12(x)*cos(α) - V12(y)*sin(α) = 0*cos(-30) - (-100)*sin(-30) = -50
y' = V12(x)*sin(α) + V12(y)*cos(α) = 0*sin(-30) + (-100)*cos(-30) = -86.6

当用点P1平移时,P3的坐标变为

[x, y] = [-50+150, -86.6+210] = [100, 123.4]

答案 1 :(得分:4)

如果您将矢量P1-> P2旋转约为P1的α,您将得到矢量P1-> P3。然后知道P1你可以得到P3。

关于原点的旋转的基本方程是:

[ cos(α) -sin(α) ] [x]
[ sin(α)  cos(α) ] [y]

你可能不得不用你的坐标系来改变这些标志,但我总是不得不通过反复试验来解决它,因为我永远不会记得!

不要忘记 - 正如S.C.Madsen所说sincos期望角度是弧度而非度数。

Wikipeida关于rotation的文章提供了更多信息。

答案 2 :(得分:2)

Complex_To_Vector(Vector_To_Complex(P_2 - P_1)* e i * alpha )+ P_1。

(只是为了好玩 - 不是一个严肃的建议)

答案 3 :(得分:1)

设r是从P1到P2的距离。然后P3在P1的负x方向上位于r * sin(α),并且在P1的负y方向上位于r * cos(α)。有关详细信息,请参阅Wikipedia on trigonometry。因此P3具有坐标P1 - (r * sin(α),r * cos(α))。

旁注:很遗憾因为MO没有LaTeX的支持。

答案 4 :(得分:1)

在调用sin和cos时,角度必须是弧度,你说的角度alpha是30,所以它似乎是以度为单位。除此之外,我认为'gspr'和'ChrisF'就如何解决这个问题给出了很好的建议。