2016-09-30 4 views

答えて

1

スウィフトのGLKVector3は、varかのいずれであっても変更できません。任意のFloat値を持つものを作成するには、GLKVector3Makeを使用します。新しいインスタンスに新しい結果を生成します。

ので:

locationInBallCoordinatesballCentreはすでに GLKVector3のインスタンスであれば
let ballLocation = GLKVector3Make(
    (locationInBallCoordinates.x - ballCentre.x)/ballRadius, 
    0.0, 
    (locationInBallCoordinates.y - ballCentre.y)/ballRadius) 

または、 - そして私が最初にこの答えを書いたとき、私は気づいていなかったY・ツー・Z成分のスイッチがありませんでした - その後:

let ballLocation = 
    GLKVector3DivideScalar(
     GLKVector3Subtract(locationInBallCoordinates, ballCentre), 
     ballRadius) 

それは、z秒にy Sを移動するために解凍して再梱包し、おそらく最も簡単ですが、あなたはそれに高いレベルに保つために必死だった場合、あなたはまた、乗算行列を使用することができます。

+1

私はそれを恐れていました。一口。このようなtrival set-ting操作のために不必要に厄介な/言葉のあるコードを作成します。その後。どうも。 – dugla

+0

ああ、実際には、もっと簡潔にするために+ -/*をオーバーロードすることができます。スウィフトFTW。 – dugla

関連する問題