1
我需要在兩個SpriteKit節點之間移動,長度爲例如100(紅色箭頭)的CGVector
。限制CGVector的長度,同時保持其方向
但我想限制矢量的長度爲70,如果它超過70(綠色箭頭)。所以,我需要「削減」紅色矢量的長度,但要保持它的方向。
我怎麼能這樣做?
我需要在兩個SpriteKit節點之間移動,長度爲例如100(紅色箭頭)的CGVector
。限制CGVector的長度,同時保持其方向
但我想限制矢量的長度爲70,如果它超過70(綠色箭頭)。所以,我需要「削減」紅色矢量的長度,但要保持它的方向。
我怎麼能這樣做?
假設您有一個變量v
,其類型爲CGVector
。首先,計算它的長度:
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;
}