python - Matching Angles between Edges -


i'm scripting in python starters. making example simple, have 1 edge, uv coordinates of ([0,0],[1,1]), 45 degree angle. have edge ([0,0],[0,1]) angle 0/360 degrees. goal compare angles of 2 edges in order difference can modify angle of second edge match angle of first edge. there way via vector math?

easiest reconstruct , constructively remember imo complex picture. compute angle a=a.x+i*a.y b=b.x+i*b.y rotate b multiplying conjugate of a angle 0 angle resp. positive real axis,

arg((a.x-i*a.y)*(b.x+i*b.y))  =arg((a.x*b.x+a.y*b.y)+i*(a.x*b.y-a.y*b.x))  =atan2( a.x*b.y-a.y*b.x , a.x*b.x+a.y*b.y ) 

note screen coordinates use opposite orientation cartesian/complex plane, change use sign switch atan2(y,x) atan2(-y,x) angle in usual direction.


to produce vector b rotated angle (in radians) w a, multiply cos(w)+i*sin(w) obtain

b.x = cos(w)*a.x - sin(w)*a.y b.y = cos(w)*a.y + sin(w)*a.x 

you have rescale specified length of b.


Comments