所以我有一条线在两点之间绘制。让我们说A和B,我可以很容易地抓住Cocos2d中线的中点,我也可以很容易地计算出该线的向量和垂直向量。但是我的数学技能非常生疏,我不知道如何做到以下几点。
让我们说A和B之间的距离是50,所以中点是25.我想绘制一个与这条线垂直的点,距离它的距离为10。
C
/ \
/ \
/ \
/ \
/ \
A------------B
很抱歉这个可怕的例子,但我不知道该怎么做。另外AB线总是处于某个角度,它永远不会像在这里一样直。
答案 0 :(得分:1)
鉴于中点m
和垂直向量v
,您需要对v
进行标准化,然后从v
向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;