Objective c 如何在Cocoa中找到线的方向?
考虑笛卡尔坐标系中的直线AB。这条线的长度是d 我需要的是: 我想在点B上画一个箭头,代表直线的方向 我尝试的是: ,它被放置在AB线中,在B的一些x点之前。然后我试图找到点p&Q相对于CB线成90度。但这对我不起作用 请参阅此图: 除了执行这些复杂的步骤,还有其他方法可以找到直线的方向,从而在正确的方向上绘制正确的箭头吗 请记住,这条线可能位于任何方向。我只知道A点和B点 我不认为中给出的答案太复杂。通过使用CGPoint而不是x,y对,可以使它看起来更漂亮一些 您的问题中缺少一个输入参数:箭头的所需大小,例如从C到B的距离 也就是说,下面的计算应该对您有所帮助Objective c 如何在Cocoa中找到线的方向?,objective-c,point,direction,Objective C,Point,Direction,考虑笛卡尔坐标系中的直线AB。这条线的长度是d 我需要的是: 我想在点B上画一个箭头,代表直线的方向 我尝试的是: ,它被放置在AB线中,在B的一些x点之前。然后我试图找到点p&Q相对于CB线成90度。但这对我不起作用 请参阅此图: 除了执行这些复杂的步骤,还有其他方法可以找到直线的方向,从而在正确的方向上绘制正确的箭头吗 请记住,这条线可能位于任何方向。我只知道A点和B点 我不认为中给出的答案太复杂。通过使用CGPoint而不是x,y对,可以使它看起来更漂亮一些 您的问题中缺少一个输入参数:箭
// 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);
通过先减去向量CB=CB.x,CB.y,然后再加上垂直向量-CB.y,CB.x,从B中计算出p
我不认为中给出的答案太复杂。通过使用CGPoint而不是x,y对,可以使它看起来更漂亮一些
您的问题中缺少一个输入参数:箭头的所需大小,例如从C到B的距离
也就是说,下面的计算应该对您有所帮助
// 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);
通过先减去向量CB=CB.x,CB.y,然后再加上垂直向量-CB.y,CB.x,从B计算出p。点C可以正好位于点A的顶部,并且仍然具有90度角。你需要给我们更多关于如何确定C应该在哪里的信息。C点不是问题。此图描述了我尝试的方法。抛开所有的东西,简单地考虑两点A和B。我需要在点B中画一个箭头。现在清楚了吗?C点正好在A点的顶部,仍然有90度角。你需要给我们更多关于如何确定C应该在哪里的信息。C点不是问题。此图描述了我尝试的方法。抛开所有的东西,简单地考虑两点A和B。我需要在B点画一个箭头。现在清楚了吗?