baca Opublikowano 10 Grudnia 2010 Udostępnij Opublikowano 10 Grudnia 2010 Mam x punktów i bym chciał określić pomiędzy dwoma przecięcie np: ... Point a(100, 100); Point b(200, 200); ... i jak kliknę pomiędzy punktem a i b, to żeby mi wykryło kolizję z linią pomiędzy tymi punktami. Jak to zrobić? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 10 Grudnia 2010 Udostępnij Opublikowano 10 Grudnia 2010 Znaczy chcesz zbudować odcinek i sprawdzić czy kliknięty punkt leży na odcinku? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
baca Opublikowano 10 Grudnia 2010 Autor Udostępnij Opublikowano 10 Grudnia 2010 tak Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 10 Grudnia 2010 Udostępnij Opublikowano 10 Grudnia 2010 mouse = { x, y } points = { a : { x, y }, b : { x, y } }; if( mouse.x >= min( points.a.x, points.b.x ) && mouse.x <= max( points.a.x, points.b.x ) ) { if( mouse.y >= min( points.a.y, points.b.y ) && mouse.y <= max( points.a.y, points.b.y ) ) { a = ( points.a.y - points.b.y ) / ( points.a.x - points.b.x ); b = points.a.y - a * points.a.x; if( mouse.x * a + b == mouse.y ) { // ok } else { // bad } } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
baca Opublikowano 10 Grudnia 2010 Autor Udostępnij Opublikowano 10 Grudnia 2010 Dzięki sprawdzę Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 10 Grudnia 2010 Udostępnij Opublikowano 10 Grudnia 2010 https://gmclan.org/up152_12_101210_gm8_point_on_line.html Szybki test. Spacja restart rooma. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 10 Grudnia 2010 Udostępnij Opublikowano 10 Grudnia 2010 Tak żeby było bardziej analitycznie, musisz sobie wyznaczyć za pomocą tych dwóch punktów funkcje liniową, i później podstawić pozycję myszki do tej funkcji Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 10 Grudnia 2010 Udostępnij Opublikowano 10 Grudnia 2010 A niby jak jest tutaj to zrobione? :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 10 Grudnia 2010 Udostępnij Opublikowano 10 Grudnia 2010 Skont mam wiedzieć, jestem koniem. Przecież nie napisałem, że u Ciebie jest inaczej ;o Dodał bym tylko jakiś zakres tolerancji: if( abs( mouse.x * a + b - mouse.y ) < 0.5 ) { Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 10 Grudnia 2010 Udostępnij Opublikowano 10 Grudnia 2010 Zabrzmiało jakbyś w ogóle nie widział co napisałem. =P Dodał bym tylko jakiś zakres tolerancji: if( abs( mouse.x * a + b - mouse.y ) < 0.5 ) { Zależy czy oczekuje takiej tolerancji. Niemniej: +1. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
baca Opublikowano 10 Grudnia 2010 Autor Udostępnij Opublikowano 10 Grudnia 2010 Tolerancja to jest dobry pomysł ponieważ jest mi to potrzebne do edytora vektorów. a jak wiadomo nie jest łatwo trafić w linię grubości 1-2px. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się