ARHitTestResult.worldTransform
はmatrix_float4x4
である。だから、それは4x4の行列です。 .columns
は0
から番号が付けられているので、ベクトル(hitResult.worldTransform.columns.3.x, hitResult.worldTransform.columns.3.y, hitResult.worldTransform.columns.3.z)
は、4x4ベクトルの最終列の先頭にある3つのものです。
行列の一番下の行が(0, 0, 0, 1)
で、位置ベクトルが(x, y, z, 1)
の形式であるとしても問題ありません。それではベクトルに適用されたときにマトリックスが何をするかを見て:
a b c d x a*x + b*y + c*z + d
e f g h y e*x + f*y + g*z + h
i j k l * z = i*x + j*y + k*z + l
0 0 0 1 1 1
(d, h, l)
は掛けません、彼らは別のベクトルであるかのようにちょうど上の追加されます。だから、行列の左上の3x3の部分が(x, y, z)
に何かをするが、それを移動しません
a b c x d
e f g * y + h
i j k z l
:それは同じです。例えば。開始時に(x, y, z)
が(0, 0, 0)
の場合は、最後にはまだ(0, 0, 0)
になります。したがって、3x3行列は回転、拡大、または他の多くのことをするかもしれませんが、翻訳はできません。
(d, h, l)
しかし、それはちょうどあなたが最後に追加するものなので、明らかにちょうど翻訳です。翻訳はあなたが望むものです。現在のカメラの位置から飛行機に乗る方法です。だからあなたはそれをまっすぐに引き出すことができます。
他の行では、チュートリアルのリンクを投稿できますか? –