2011-01-28 29 views
0

2つのベクトルの相対的な角度を取得しようとしました。ofxVectorMathの簡単な使用

しかし、コードが出力するものは途方もないものです。

どこに間違っているのですか?二つのベクトルと

ofDrawBitmapString(ofToString(point.angle(mouse), 5), 20, 40); 

出力はvec2f状態のように度にする必要があり、このラインを使用

。 さらに、2つのベクトルを同じ角度ではあるが離れて設定すると、別の値が再び与えられます。

...混乱していますか?

誰でも成功に使用しましたか?非常に簡単な計算をする必要がありますどのような

私は自分CALCSを作成それでも正しく私のために動作しませんセット日焼けやATANを使用してみました。..

は私が困惑しています。

答えて

1

あなたはatan2はあなたがソートを取得すべき使用して、中央にマウスの角度を取得したい場合:

ofDrawBitmapString("mouse angle: " + ofToString(ofRadToDeg(atan2(mouseY,mouseX)), 3),30,30); 

あなたは別のポイントに比べて回転をしたい場合は、やることを忘れないでください最初に2つの点(例えば、マウス、他の点)間の減算。

あなたは、2つのベクトルを正規化ベクトル間の内積のACOSを取得する必要があります3Dでの2つのベクトル間の角度(ofxVec3f)を取得したい場合は

すでに
angle_in_radians = acos(v1.dot(v2)) 

ofxVec3fangle()angleRad()角度を角度と角度のラジアンで返します。

ofxVec3f v1(ofRandom(0,20),ofRandom(0,20),ofRandom(0,20)); 
ofxVec3f v2(ofRandom(0,20),ofRandom(0,20),ofRandom(0,20)); 

printf("v1(%f,%f,%f)\tv2(%f%f%f)\tangle:%f",v1.x,v1.y,v1.z,v2.x,v2.y,v2.z,v1.angle(v2)); 
//here's a test print: v1(10.333943,16.629400,5.899722) v2(3.60652910.2126262.595955) angle:12.418082 
+0

おかげでヒープ:ここ

は、コンソールの2つのランダムなベクトル間の角度を表示し、基本的なテストです。まだ3次元ベクトルの実装はまだ必要ではありませんでしたが、有益な返答に感謝します!最後に、atan2を効果的に使用します。 – aKiwi

+1

@aKiwi atan2があなたのために働いてうれしいです。 3Dベクトルに関しては、それはベクトル計算のビットです。私はここでより詳細な説明を見つけました:http://www.euclideanspace.com/maths/algebra/vectors/angleBetween/index.htmしかしベクトル計算をdiscusesするどんな文脈でも、あなたはドットプロダクトをdiscusesする部分に行きます2つのベクトルの間の角度を計算する方法)とクロス積(および2つのベクトルの間の垂線を計算する方法)...私が答えで言及したように、あなたが数学に興味がないなら...単にv1を使う.angle(v2)ここで、v1、v2はofxVec3fであり、角度を度で取得します。 –

関連する問題