それで、私は 3D プログラミングを学ぼうとしていて、物事がどのように機能するかをよりよく理解するためにいくつかの実験をしようとしています。
私が試していることの 1 つは、(threejs を使用して) 線を描画し、ランダムに回転させることです。
私はマトリックスの男ではありませんでした.私は常に「頭の中で意味をなす」方法で2Dで物事を行いました.
# CoffeeScript
get_angle:->
Math.atan2(@props.velocity[1],@props.velocity[0])
rotate:(amount)->
ang = @get_angle()
mag = @get_speed()
# props is a velocity vector, [0] is x and [1] is y
@props.velocity[0] = Math.cos(ang+amount)*mag
@props.velocity[1] = Math.sin(ang+amount)*mag
渡された量はランダムです...ランダムな「ウォーク」を生成しています
どうすれば3Dで同じことができるのだろうと思っていましたか? 現在、アプリケーションは正常に動作します (私の行も表示されます) が、「フラット」です。深さはありません (Z コンポーネントが変更されていないため) これは私が考えていたことですが、これはこれを行うスマートな方法でしょうか?
コーヒースクリプト
get_angle:->
Math.atan2(@props.velocity[1],@props.velocity[0])
get_angle2:->
# not sure about this, but I feel like I need to be finding the angle from the z now and something else.
rotate:(amount)->
ang = @get_angle()
ang2 = @get_angle2()
mag = @get_speed()
# props is a velocity vector, [0] is x and [1] is y
@props.velocity[0] = Math.cos(ang+amount)*mag
@props.velocity[1] = Math.sin(ang+amount)*mag
@props.velocity[2] = # I have a feeling here I would do something with ang2 and amount?
技術的には、2 つのコンポーネントのローテーションを渡したいと思うことはわかっていますが、3 つのコンポーネントすべてを同じローテーションにすることもできるのではないかと考えました。