所以我有一条线画在两点之间。假设 A 和 B,我可以很容易地在 Cocos2d 中抓取直线的中点,我也可以很容易地计算向量和垂直于这条线的向量。但是,我的数学技能非常生疏,我不知道如何执行以下操作。
假设 A 和 B 之间的距离是 50,所以中点是 25。我想绘制一个垂直于这条线的点,距离它 10
个。 C
/
/
/
/
/
A------------B
很抱歉这个可怕的例子,但我不确定该怎么做。此外,AB 线总是处于某个角度,它永远不会像这里那样笔直。
给定中
点m
和垂直向量v
,您需要对v
进行归一化,然后从m
向v
方向移动。所以像这样:
Vector2d nv = v / v.length(); // Assuming Vector2d is your vector class and length gives the length of v
Point2d newPoint = m + (nv * 10.0); // Assumes you can multiply a vector by a scalar
如果您不在C++中工作,则可能需要像这样手动编写它:
Vector2d nv;
nv.x = v.x / v.length();
nv.y = v.y / v.length();
newPoint.x = m.x + nv.x * 10.0;
newPoint.y = m.y + nv.y * 10.0;