嗨,我有几何问题让我发疯。我想确定一个顶点在“Isosceles Right Triangle”中的位置(alpha = 45°; beta = 45°; gamma = 90°)。
我有a,b,c,h和A和B的位置(并且导致角度)。唯一缺少的是x,y术语中的C.有人可以支持我吗?
答案 0 :(得分:1)
以下代码仅适用于45°-45°-90°三角形 - 需要针对其他三角形进行修改。
请注意,您只需要A
和B
的坐标即可。 c
就是这两点之间的距离,h
是c/2
,a
和b
都是c/sqrt(2)
。这个Python代码返回一个2元组(Cx, Cy)
,给出坐标C
,假设您希望C
从向量AB
逆时针方向。如果您想要顺时针方向,请在定义inclinationAC
的计算中用加号替换加号。这只使用了基本的三角学,显示了每个步骤 - 正如Ed Heal在他的评论中所说的那样,还有其他方法,但大多数人都应该更容易理解这一点。
from math import sqrt, hypot, pi, cos, sin, atan2
def corner_right_isoceles(Ax, Ay, Bx, By):
"""Return the coordinates of the right-angle corner of a right
isosceles triangle if the other two vertices are the points
(Ax, Ay) and (Bx, By). The returned corner is counterclockwise
from the vector AB.
"""
c = hypot(By - Ay, Bx - Ax)
b = c / sqrt(2)
inclinationAB = atan2(By - Ay, Bx - Ax)
inclinationAC = inclinationAB + pi / 4
Cx = Ax + b * cos(inclinationAC)
Cy = Ay + b * sin(inclinationAC)
return Cx, Cy
答案 1 :(得分:1)
这是另一个版本,它更简单一些,计算效率也更高。我的想法是h
恰好是此三角形中c
的一半:
dx = Bx - Ax
dy = By - Ay
Cx = Ax + 0.5 * (dx - dy)
Cy = Ay + 0.5 * (dy + dx)