View Full Version : Vectors calcul using Scripted Operator

 Crase02 February 2011, 11:44 PMHi everyone ! I am trying something these days and i met some troubles regarding some vectors calcul ! There is what i am trying to do : I have a null control ( ctrl ) , an other null ( ref-null ) and an other null again ( ik-arm ) I want to calculate a vector between my ref-null and my ik-arm, then i will calculate an angle between my ref vector and the vector i just calculated There is a picture to explain better : http://img694.imageshack.us/img694/5583/issueb.jpg (http://img694.imageshack.us/i/issueb.jpg/) 1 : This is the vector that i calculate in my script with var refvector = ref.Value.Transform.Translation; 2 : This is the vector that i calculate in my script with var ikvector = ik.Value.Transform.Translation; 3 : This is the vector that i calculate with the vector 1 and 2 : var vecteurResult = XSIMath.CreateVector3(); // on créé d'abord un vecteur vide vecteurResult.sub(ikvector,refvector); 4 : This is the angle that i WANT to calculate with : var theta = vecteurResult.Angle( refvector ) But my theta returns me this angle : http://img25.imageshack.us/img25/4195/angleft.jpg (http://img25.imageshack.us/i/angleft.jpg/) and i don't understand why :( There is a picture of my scripted operator ( which is on my ctrl null ) http://img19.imageshack.us/img19/1743/scripted.jpg (http://img19.imageshack.us/i/scripted.jpg/) There is the code : // Calcul of my 2 vectors var ikvector = ik.Value.Transform.Translation; var refvector = ref.Value.Transform.Translation; PrintVector( "ikvector:", ikvector ); PrintVector( "refvector:", refvector ); // Calcul of my third vector var vecteurResult = XSIMath.CreateVector3(); // on créé d'abord un vecteur vide vecteurResult.sub(ikvector,refvector); PrintVector( "vecteur Result:", vecteurResult ); // Angle theta calcul var theta = vecteurResult.Angle( refvector ) Application.LogMessage( "Angle is " + theta + " radians (" + theta / XSIMath.Pi + " pi)" ) ; Application.LogMessage( "Angle is " + XSIMath.RadiansToDegrees( ikvector.Angle( refvector ) ) + " degrees" ) ; function PrintVector( in_Prefix, in_oVec ) { Application.LogMessage( in_Prefix + " " + XSIRound(in_oVec.x,3) + ", " + XSIRound(in_oVec.y,3) + ", " + XSIRound(in_oVec.z,3) ) ; } Out.Value = 0.000000; I used as input : ref-null.kine.global and ik-arm.kine.global I'm pretty sure i am doing something wrong somewhere, so if anyone has an idea... :) I have another problem, I don't know how i can calculate the vector which is on my Y axis on this null : http://img196.imageshack.us/img196/7956/33430775.jpg (http://img196.imageshack.us/i/33430775.jpg/) Thanks :)
CGTalk Moderation
02 February 2011, 11:44 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.

1