var my_q; //my angle quadrant or quartenion
var target_q; //target quadrant
var comp; // complementar angle to best short angle calculations
var d_sign; //rotate direction
var d_count; // how much we need to rotate to get to the target
function turn_target {
var ang_temp[3];
vec_diff(ang_temp,p1.x,my.x);
vec_to_angle(my_angle.pan,ang_temp); turn my_angle vector
if(my_angle.pan<0){my_angle.pan+=360;} //convert angle to 360 range if needed
/// HERE i assign the target quadrant
if(my_angle.pan<=360 && my_angle.pan>270){target_q=4;}
if(my_angle.pan<=270 && my_angle.pan>180){target_q=3;}
if(my_angle.pan<=180 && my_angle.pan>90){target_q=2;}
if(my_angle.pan<=90 && my_angle.pan>=0){target_q=1;}
//Here i'll assign in which my angle quadrant is
if(my.pan<=360 && my.pan>270){my_q=4;}
if(my.pan<=270 && my.pan>180){my_q=3;}
if(my.pan<=180 && my.pan>90){my_q=2;}
if(my.pan<=90 && my.pan>=0){my_q=1;}
// Here i set the complement angle constrain to 360 range
comp%=360;
comp=my_angle.pan+180; // complement angle = my angle + 180
// if my angle is within the target (+/-2) no need to calculate , otherwise calculate:
if(!(my.pan<(my_angle+2) && my.pan>(my_angle-2)) ){
//if the target quadrant is different from the my angle quadrant
if(target_q!=my_q){
// Now calculate all the quadrant interactions and possibilites.
//adjacents quadrant - simple - done
if(target_q==1 && my_q==2){d_sign=-1;d_count=my.pan-my_angle.pan;}else{if(my_q==1 && target_q==2){d_sign=1;d_count=my_angle.pan-my.pan;}}
if(target_q==2 && my_q==3){d_sign=-1;d_count=my.pan-my_angle.pan;}else{if(my_q==2 && target_q==3){d_sign=1;d_count=my_angle.pan-my.pan;}}
if(target_q==3 && my_q==4){d_sign=-1;d_count=my.pan-my_angle.pan;}else{if(my_q==3 && target_q==4){d_sign=1;d_count=my_angle.pan-my.pan;}}
if(target_q==4 && my_q==1){d_sign=-1;d_count=360-(my_angle.pan-my.pan);}else{if(my_q==4 && target_q==1){d_sign=1;d_count=360-(my.pan-my_angle.pan);}}
if(target_q==2 && my_q==4){
if(my.pan<comp){d_sign=-1;d_count=my.pan-my_angle.pan; } //manual complement -done
if(my.pan>comp){d_sign=1;d_count=360-(my.pan-my_angle.pan); } //manual complement - done
}else
{if(my_q==2 && target_q==4){
if(my.pan<comp){d_sign=-1; d_count=360-(my_angle.pan-my.pan); } //manual complement - done
if(my.pan>comp){d_sign=1; d_count=my_angle.pan-my.pan; } //manual complement - done
}}
if(target_q==3 && my_q==1){
if(my.pan<comp){d_sign=-1; d_count=360-(my_angle.pan-my.pan); } //manual complement - done
if(my.pan>comp){d_sign=1; d_count=my_angle.pan-my.pan; } //manual complement - done
}else
{if(my_q==3 && target_q==1){
if(my.pan<comp){d_sign=-1; d_count=my.pan-my_angle.pan; } //manual complement - done
if(my.pan>comp){d_sign=1; d_count=360-(my.pan-my_angle.pan); } //manual complement -done
}}
}else{if(my.pan>my_angle.pan){d_count=my.pan-my_angle.pan; d_sign=-1;}else{d_sign=1; d_count=my_angle.pan-my.pan;}}
}
// D_Count stores how much we still need to rotate, for the shortest angle
if(d_count>0){
// Now rotate the my pan, to that angle...
if(d_sign==1){c_rotate(me,vector(rotate_speed,0,0),USE_AXIS|GLIDE);}
if(d_sign==-1){c_rotate(me,vector(-rotate_speed,0,0),USE_AXIS|GLIDE);}
d_count-=rotate_speed;
if(my.pan<0){my.pan+=360;} //convert angle to 360 range here, due to c_rotate mutation ( c_rotate tranform my pan in a -180: 180 range and not 0..360
}else{d_count=0;}
}