0

所以我有一条在两点之间绘制的线。比方说 A 和 B,我可以很容易地在 Cocos2d 中抓取线的中点,并且我也可以很容易地计算出该线的向量和垂直向量。但是我的数学技能非常生疏,我不知道如何做以下事情。

假设 A 和 B 之间的距离是 50,所以中点是 25。我想绘制一个垂直于这条线的点,距离它有 10 的距离。

      C
     /  \
    /    \
   /      \
  /        \
 /          \
A------------B

对不起这个可怕的例子,但我不知道该怎么做。而且 AB 线总是在某个角度,它永远不会像这里那样笔直。

4

1 回答 1

1

给定中点m和垂直向量v,您需要进行归一化v,然后向vfrom的方向移动m。所以是这样的:

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;
于 2012-06-18T20:58:17.367 回答