- o = [xo = 0, yo = 0] is the origin
- A = [xA, yA] is a point on the 2D plane. Same for B, C, ...
- lengths are in any unit (ex: pixels)
- code snippets are in JavaScript
angleRad = angleDeg * Math.PI / 180;
angleDeg = angleRad * 180 / Math.PI;
- dist = function(A,B){ return Math.sqrt((xB - xA)*(xB - xA) + (yB - yA)*(yB - yA)) } // ES5
- dist = (A, B) => Math.hypot(xB -xA, yB -yA) // ES6
- line equation: y = ax + b
- a = (yB - yA) / (yB - yA) = tan θ
- θ = angle between line and x axis
- b = yA - a * xA (because yA = a * xA + b)
angle = Math.atan2(Ax, Ay)
angle = Math.atan2(By - Ay, Bx - Ax);
- Anew_x = Ax * Math.cos(angle) - Ay * Math.sin(angle)
- Anew_y = Ax * Math.sin(angle) + Ay * Math.cos(angle)
- Anew_x = Math.cos(atan2(Ax, Ay))
- Anew_y = Math.sin(atan2(Ax, Ay))