vex: quaternion function test case - miyagiA/MyLearningNote GitHub Wiki

※need input Box

eulertoquaternion_to_qrotate

//This means the same value as "transform" node "rotation".
v@rot=chv("rot");
v@rotR=radians(v@rot);

//Get a quaternion with two inputs.
//The input is the rotation value in radians and the calculation order of the axes
//vector4  eulertoquaternion(vector rotations, int order)
vector4 quat = eulertoquaternion(v@rotR,XFORM_XYZ);

//Returns the vector 2rdInput rotated by the given quaternion .
//vector4  eulertoquaternion(vector rotations, int order)
v@P=qrotate(quat,@P);

eulertoquaternion_to_qrotate_obj_center

//This means the same value as "transform" node "rotation".
v@rot=chv("rot");
v@rotR=radians(v@rot);

//Get a quaternion with two inputs.
//The input is the rotation value in radians and the calculation order of the axes
//vector4  eulertoquaternion(vector rotations, int order)
vector4 quat = eulertoquaternion(v@rotR,XFORM_XYZ);

vector cent=getbbox_center(0);

//Returns the vector 2rdInput rotated by the given quaternion .
//vector4  eulertoquaternion(vector rotations, int order)
v@P=qrotate(quat,@P-cent);

rotation_xyz_for_each_axis

//This means the same value as "transform" node "rotation".
v@rot=chv("rot");
v@rotR=radians(v@rot);

vector axX=set(1,0,0);
vector axY=set(0,1,0);
vector axZ={0,0,1};

//vector4  quaternion(float angle, vector axis)
vector4 quat =quaternion(radians([email protected]),axX);
v@P=qrotate(quat,@P);
quat =quaternion(radians([email protected]),axY);
v@P=qrotate(quat,@P);
quat =quaternion(radians([email protected]),axZ);
v@P=qrotate(quat,@P);

rotation_xyz_for_each_axis

//This means the same value as "transform" node "rotation".
v@rot=chv("rot");
v@rotR=radians(v@rot);

vector axX=set(1,0,0);
vector axY=set(0,1,0);
vector axZ={0,0,1};

//vector4  quaternion(float angle, vector axis)
vector4 quat =quaternion(radians([email protected]),axX);
v@P=qrotate(quat,@P);
quat =quaternion(radians([email protected]),axY);
v@P=qrotate(quat,@P);
quat =quaternion(radians([email protected]),axZ);
v@P=qrotate(quat,@P);

vector4 quaternion(vector angleaxis)

※★ I can not understand....2022.12.04

//This means the same value as "transform" node "rotation".
v@rot=chv("rot");
v@rotR=radians(v@rot);
vector angleaxis= v@rotR*radians(chv("degree"));

//vector4  quaternion(vector angleaxis)
//★ I can not understand....2022.12.04
vector4 quat =quaternion(angleaxis);
v@P=qrotate(quat,@P);

vector4 quatN = eulertoquaternion(v@rotR,XFORM_XYZ);
v@N=qrotate(quatN,@N);