限制 CGVector 的长度,同时保持其方向
Limit CGVector's length while keeping its direction
我需要在两个 SpriteKit 节点之间移动 CGVector
,其长度例如为 100(红色箭头)。
但我想将向量的长度限制为 70,如果它超过 70(绿色箭头)。所以,我需要 "cut" 红色矢量的长度,但保持其方向。
我该怎么做?
假设您有一个类型为 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;
}
我需要在两个 SpriteKit 节点之间移动 CGVector
,其长度例如为 100(红色箭头)。
但我想将向量的长度限制为 70,如果它超过 70(绿色箭头)。所以,我需要 "cut" 红色矢量的长度,但保持其方向。
我该怎么做?
假设您有一个类型为 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;
}