在笛卡尔坐标系中考虑 AB 线。该行的长度为 d 。
我需要什么:
我想在B点画一个箭头来表示线的方向。
我尝试了什么:
在p的某些x点之前放置在AB线中的I found a point C。然后我试图找到相对于线CB在90度的点(P& Q)。但它对我不起作用。
参考此图片: 而不是做这个复杂的步骤,有没有其他方法来找到线的方向,以正确的方向绘制正确的箭头?
请记住线可能位于任何方向。我所拥有的只是A& A点。只有B。
答案 0 :(得分:4)
我认为How can I find the points in a line - Objective c?中给出的答案太复杂了。您可以使用CGPoint
代替(x, y)
对,使看起来更好。
您的问题中缺少一个输入参数:箭头的所需大小,例如从 C 到 B 的距离。
< / LI> 醇>话虽如此,以下计算应该对您有帮助。
// Your points A and B:
CGPoint A = CGPointMake(x1, y1);
CGPoint B = CGPointMake(x2, y2);
// Vector from A to B:
CGPoint AB = CGPointMake(B.x - A.x, B.y - A.y);
// Length of AB == distance from A to B:
CGFloat d = hypotf(AB.x, AB.y);
// Arrow size == distance from C to B.
// Either as fixed size in points ...
CGFloat arrowSize = 10.;
// ... or relative to the length of AB:
// CGFloat arrowSize = d/10.;
// Vector from C to B:
CGPoint CB = CGPointMake(AB.x * arrowSize/d, AB.y * arrowSize/d);
// Compute P and Q:
CGPoint P = CGPointMake(B.x - CB.x - CB.y, B.y - CB.y + CB.x);
CGPoint Q = CGPointMake(B.x - CB.x + CB.y, B.y - CB.y - CB.x);
P 是通过先从 B 中减去矢量 CB =(CB.x,CB.y)然后再加上垂直来计算的vector(-CB.y,CB.x)。