如何根据箭头计算箭头的坐标?
我有一条线基于我知道的两个(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
直接。
以上是 如何根据箭头计算箭头的坐标? 的全部内容, 来源链接: utcz.com/qa/401979.html