我正在编写一个在斜坡上绘制一系列三角形的Objective-c方法。为了完成这个,我需要计算每个三角形的顶点(C,D)。位置起点和终点是可变的。
这似乎应该是一个简单的数学问题。但到目前为止,我还没有能够在纸上解决这个问题。有人能指出我正确的方向吗?
答案 0 :(得分:2)
不涉及三角函数。
让D= Sqrt(X12^2+Y12^2)
与P1
(P2
和X12 = X2-X1
)之间的欧几里德距离Y12 = Y2-Y1
,让p= P/D
,{{1} }。
如果a= A/D
是线段P1P2
,则顶点将位于(0, 0)-(1, 0)
,(0, 0)
,(a, p/2)
,(0, p)
,{{ 1}} ...
下面的转换可以缩放并将(a, 3p/2)
转换为(0, 2p)
:
(0, 0)-(1, 0)
答案 1 :(得分:1)
水平设置原点三角形:
(0, 0), (p, 0), (p/2, a)
旋转以获得所需的斜率alpha
:
(0, 0), (p*cos(alpha), p*sin(alpha)), (p/2 * cos(alpha) - a * sin(alpha), p/2 * sin(alpha) + a*sin(alpha))
通过向所有坐标添加(x1, y1)
进行转换。
第三个坐标是你的顶点:
(Cx, Cy) = (p/2 * cos(alpha) - a * sin(alpha) + x1, p/2 * sin(alpha) + a*sin(alpha) + y1)
要查找其他顶点,请使用p
在角度alpha
下相互移动(Cx_i, Cy_i) = (Cx, Cy) + i*(p * cos(alpha), p * sin(alpha))
的事实:
{{1}}