Pytanie : Coordinates od jeden równorzędny system jeden

Na prześcieradło papier:
The X coordinate wzrost od lewica right
The Y coordinate wzrost od wierzchołek bottom
(0,0) być przy the odgórny lewy corner.

I mieć dwa punkt na ten prześcieradło: (x1, y1) i (x2, y1) (i.e., być prześcieradło na the ten sam horyzontalny linia)

I teraz fotokopia ten prześcieradło. Podczas photocopying, the oryginalny papier przesuwać nieznacznie, i także wirować nieznacznie. Jako rezultat, mój dwa oryginalny punkt teraz zostać (na ten nowy prześcieradło papier):
(x3, y3) i (x4, y4).

Now, dawać papier punkt (a1, b1) na the oryginalny prześcieradło papier, papier swój coordinates być na the nowy prześcieradło papier?

I myśleć I czerpać the poprawny formulat dla/>Thanks.
, ale I zawsze wydawać się zawsze piksel off.

Thanks.

Odpowiedź : Coordinates od jeden równorzędny system jeden

Ty prawdopodobnie już czerpać the poprawny równanie, ale pozwalać iść przez ono jakkolwiek.

Ty chcieć sztywno transformacja który tłumaczyć (x1, y1) (x3, y3), i (x2, y1) (x4, y4).

My móc the sztywno transformacja jako przekład, obracanie.  My zaczynać z przekład który ruszać się (x1, y1) (x3, y3).  To być łatwy:

(a, B) ---> (a + x3 - x1, B + y3 - y1)

robić the sztuczka.

Teraz, my chcieć transformacja który wirować wokoło the punkt (x3, y3) tak, że the punkt oryginalnie przy (x2, y1), che kartografować (x2 + x3 - x1, y3), wirować (x4, y4).

Pozwalać the kąt ten obracanie.  Przywoływać ten the kierunek wektor (x, y) móc ustalać the atan2 (y, x) funkcja (najwięcej matematyka biblioteka mieć atan2 che ustalać the kwadrant the wektor as well as swój arctan - używać the prosty atan (y/x) funkcja dla atan2).

W Ten Sposób the sumaryczny obracanie być właśnie the różnica między the dwa graniasty kierunek, dwa być

theta = atan2 (y4 - y3, x4 - x3) - atan2 (x2 - x1, (0))

(pamiętać że my potrzebować wektor który zaczynać przy the punkt (x3, y3), w ten sposób, potrzebować odejmować od, the punkt).

OK, teraz, my po prostu stosować obracanie operacja.

(c, D) -----> (c * cos (theta) - D * grzech (theta), c * grzech (theta) + D * cos (theta))

dokąd (c, D) = (a + x3 - x1, B + y3 - y1), od przedtem.


Jeżeli ty znajdować że ty można daleko daleko piksel blisko the krawędź twój wizerunek, ty cierpieć od postanowienie problem: the prawdziwy lokacja twój dwa punkt być naprawdę (x3, y3) i (x4, y4), ale nie być właśnie the zamknięty koordynować.  Wizerunek wpływać the przekład, ponieważ the ten sam (sub-piksel) błąd właśnie dostawać rozkrzewiać przez cały the wizerunek.  Ale dla the obracanie, mały błąd w the obracanie blisko (x4, y4) móc w wielki błąd daleki oddalony.  Podstawowy, the błąd być x1 wokoło the postanowienie twój wizerunek dzielić abs (x2 - x1).  Jeżeli x2 i x1 być zamknięty wpólnie, ty móc dlaczego ty można daleko daleko piksel.

Tam  być naprawdę żadny dobry sposób dla być, być ścisły koordynować dla (x3, y3) i (x4, y4), lub dostawać mappings dla więcej niż dwa punkt, i robić najlepszy napad na the przekład i obracanie ty chcieć.

Mieć Nadzieję to pomagać!
Inne rozwiązania  
 
programming4us programming4us