【发布时间】:2017-06-02 10:45:31
【问题描述】:
我需要在两个 SpriteKit 节点之间移动,CGVector 的长度例如为 100(红色箭头)。
但我想将向量的长度限制为 70,如果它超过 70(绿色箭头)。所以,我需要“切割”红色矢量的长度,但要保持它的方向。
我该怎么做?
【问题讨论】:
标签: ios macos vector core-graphics
我需要在两个 SpriteKit 节点之间移动,CGVector 的长度例如为 100(红色箭头)。
但我想将向量的长度限制为 70,如果它超过 70(绿色箭头)。所以,我需要“切割”红色矢量的长度,但要保持它的方向。
我该怎么做?
【问题讨论】:
标签: ios macos vector core-graphics
假设您有一个CGVector 类型的变量v。首先,计算它的长度:
double len = hypot(v.dx, v.dy);
然后,如果大于 70,则将两个分量除以 len 并乘以 70,使向量的长度等于 70:
if (len > 70.0)
{
v.dx *= 70.0 / len;
v.dy *= 70.0 / len;
}
【讨论】: