Przyciągnięcie punktu do prostej

0

mając taki układ
user image
wie ktoś jak obliczyć najbliższe (C' i D') punkty leżące na prostej |AB|. Chodzi mi o przyciągniecie prostej |CD| dokladnie na prosta |AB| ale nie wiem jak to zapisać w układzie XY.

PS to chce wykorzystać w picturebox bo tak sa rysowanie te linie za pomoca Drawline(). GDI+

0

Prosta AB jest zawsze w poziomie?
chodzi Ci o takie wyrównanie tej prostej CD do AB aby były równoległe?(na sobie)

0

przecież to są podstawy trygonometrii - najpierw wyznaczasz równanie prostej AB, potem wyznaczasz równanie prostej prostopadłej do AB i przechodzącej przez punkt C a następnie robisz z tych dwóch równań układ i wyliczasz C'

0

Własnie chodzi o to ze prosta jest w dowolnym położeniu chyli może być w pionie pod kątem itp.
Chodzi o to ze pisze program do inventaryzacji architektonicznej i powiedzmy ze ta niebieska linia reprezentuje okno które użytkownik narysował ale wiadomo ze nigdy idealnie nie trafi chce by program przyciągnął idealnie do czarnej linii (tzn ściany - która może mieć dowolne położenie )

0

Można by to zrobić w taki sposob jak pan wyżej napisał. Tylko że Przykładowo.
Jest sobie ściana, nasze AB, rysujemy kawałek okna, nasze CD.
Przyciąganie. No i jezeli ktos te okno narysował krzywo, to po przyciagnieciu w ten sposób, Długość krawędzi okna narysowanego przez uzytkownika bedzie inna niż ta na prostej AB.
Jeżeli tak będzie OK to nie ma sprawy, ale jeśli nie, to może lepiej było by, wyznaczyć środek CD, następnie, długość CD. Wyznaczyć prostą prostopadłą do AB przechodzącą przez środek CD. no i od punktu przeciecia na AB z jednej i z drugiej strony odznaczyć dwa odcinki (każdy o długości takiej jak połowa odcinka CD)?

0

Ja spróbowałem zaś wyliczyć C'x i C'y z Pitagorasa i proporcji. I wyszło mi to:

       (|AB|^2 + |AC|^2 - |BC|^2) * (Bx - Ax)
C'x = ---------------------------------------- + Ax
		      2|AB|^2

       (|AB|^2 + |AC|^2 - |BC|^2) * (By - Ay)
C'y = ---------------------------------------- + Ay
		      2|AB|^2

gdzie A, B - wierzchołki prostej, C - punkt wejściowy, C' - punkt wyjściowy. Oczywiście:

A = (Ax, Ay)
B = (Bx, By)
C = (Cx, Cy)
C' = (C'x, C'y)

Kwadrat odległości między punktami M i N w układzie współrzędnych: 
|MN|^2 = (Mx - Nx)^2 + (My - Ny)^2

Jak chcesz, możesz wyprowadzić te wzory. U mnie zadziałały jak powinny.

1 użytkowników online, w tym zalogowanych: 0, gości: 1