我有一条线基于我知道的两个(x,y)坐标。这条线有一个起点和一个终点。现在,我想在该行的终点添加一个箭头。
我知道箭头是等边三角形,因此每个角度均为60度。另外,我知道一侧的长度为20。我也没有三角形的任何一条边(即线的终点)。
如何计算三角形的其他两个点?我知道我应该使用三角函数,但是怎么做?
Ps该线的端点应为箭头的尖端。
您不需要Trig。,只需执行一些矢量算法…
假设线从A到B,箭头的前顶点在B。箭头的长度为h = 10(√3),其半角宽度为w =10。我们将表示从A到B的U =(B-A)/ | B-A | (即,差异除以差异的长度),垂直于此的单位向量为V = [-U y,U x ]。
根据这些量,可以将箭头的两个后顶点计算为B-hU±wV。
在C ++中:
struct vec { float x, y; /* … */ }; void arrowhead(vec A, vec B, vec& v1, vec& v2) { float h = 10*sqrtf(3), w = 10; vec U = (B - A)/(B - A).length(); vec V = vec(-U.y, U.x); v1 = B - h*U + w*V; v2 = B - h*U - w*V; }
如果要指定不同的角度,则将需要一些触发。计算的不同的值h和w。假设您要使用长度为h且顶角为θ的箭头,则w = h tan(θ/ 2)。然而在实践中,这是最简单的指定h和w直接。
h
w