Skalowanie pod określonym kątem z określonym środkiem i skalą można przedstawić za pomocą kilku transformacji (przekształceń), potrzebne nam będą
1. Translacja (przesunięcie)
TR(V, W) - przesunięcie wektora V o wektor W
TR(V, W) = V + W = [ Vx+Wx, Vy+Wy ]
2. Skalowanie
SK(V, X) - zeskalowanie wektora V o skale X ze środkiem skalowania w punkcie (0, 0)
SK(V, X) = [ VxXx, VyXy ]
3. Obrót
OB(V, fi) - obrót wektora V w lewo o kąt fi:
OB(V, fi) = [ Vxcos(fi) - Vysin(fi), Vxsin(fi) + Vycos(fi) ]
SKS(V, X, fi, S) skalowanie wektora V o skale X, w kierunku fi, o środku skalowania S
Aby wykonać tą operacje na wektorze V musimy go kolejno:
-przesunąć o wektor [-Sx, -Sy]
-obrócić o kąt -fi
-zeskalować o skale X
-obrócicć o kąt fi
-przesunąć o wektor [Sx, Sy]
SKS(V, X, fi, S) = TR(OB(SK(OB(TR(V, [-Sx, -Sy]), -fi), X), fi), [Sx, Sy])
z twoich danych odpowiednio wynika
sin(fi) = (By - Cy) / |BC|
cos(fi) = (Bx - Cx) / |BC|
trzezba jeszcze policzyć skale X
Xx = OB(CA', fi)x / OB(CA, fi)x
Xy = OB(CA', fi)y / OB(CA, fi)y