2012-06-28 19 views
5

Mam dwa punkty na końcu linii.
Potrzebuję uzyskać końcowe współrzędne tłumaczenia tej linii.
Tłumaczenie będzie równoległą linią, która jest odległością d od oryginalnej linii.
tutaj jest obrazem tego, co trzeba:Funkcja do tłumaczenia współrzędnych końcowych linii

enter image description here

Więc muszę funkcję, która może przekazać te dwa punkty i dystans i uzyskać dwa nowe współrzędne w deklaracji.
Utknąłem na ten problem przez jakiś czas. Każda pomoc zostanie doceniona!
Dzięki!

+0

W którym kierunku będzie wyświetlana linia, jeśli "odległość" jest dodatnia? negatywny? – justderb

+0

To tłumaczenie jest wieloznaczne bez innego kierunku. Istnieje nieskończona liczba linii, które są odległością "d" od i równolegle do linii. – cheeken

+2

Chcę, aby był to segment linii o tej samej długości i równoległy do ​​oryginału. i jeśli narysowałbyś linię między starymi i nowymi punktami, powinna ona tworzyć prostopadłą linię z oryginalną linią. Nie jestem pewien, czy to jasne. Chcę jednak linię widoczną na obrazie. –

Odpowiedz

3

Nowe koordynuje będzie uzyskany wektor

odległość d pomnożonej przez znormalizowanego wektora w jakim kierunku porusza dodana do oryginalnego wektora punkcie.

EDIT:

Biorąc pod uwagę dwa punkty linii, trzeba będzie obliczyć normalne wektora łączącej te punkty. Information on that is here..

Normalizacja ten wektor, należy pomnożyć przez d dodać do każdego punktu.

+0

Po graniu z nim przez chwilę zrozumiałem to! Dziękuję bardzo. –

2

Oblicz wektor (x2-x1, y2-y1). To wektor w kierunku twojej linii. Normalny wektor jest następnie podane przez

(-(y2-y1),-(x2-x1)) = (y1-y2,x1-x2). 

Divide tego wektora przez jego wielkości, aby uzyskać wektor jednostkowy w kierunku chcesz

A = (y1-y2,x1-x2)/|(y1-y2,x1-x2)| 

Teraz biorąc pod uwagę dystans d Twój tłumaczone punkt zostanie podana przez

NewPoint = OldPoint + d * A 
Powiązane problemy