![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 18.03.2006 Skąd: Sosnowiec Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam problem tego typu że stworzyłem funkcje rysujące różne figury za pomocą GD pobierając współrzędne z bazy są to kwadraty elipsy itp a także figury dowolne (rysowane za pomocą imagesexpixel i imagesline) I teraz mam pytanie jak po narysowaniu tego wszystkiego, po najechaniu kursorem na daną figurę i odczytaniu X i Y kursora sprawdzić czy ten punkt należy do danej figury (zawiera się w zbiorze punktów w bazie) Siedze nad tym pół dnia i nic mi nie przychodzi do głowy:/ Za jakąś pomoc będę bardzo wdzięczny |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 12.04.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
-------------------- "What you are talking to me about what"
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Każdy taki punkt składa się z dwóch współrzędnych (X,Y)
dla prostokąta masz takie 4 punkty które są granicami figury. powiedzmy masz prostokąt: LG = 20,60 PG = 100,60 PD = 100,10 LD = 20,10 LG = Lewy górny PG = Prawy górny PD = Prawy dolny LD = Lewy dolny I masz współrzędne 40,30 jak sprawdzasz czy punkt należy do prostokąta ? Za pomocą operatorów <,>,= i tyle. |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
~orglee proszę nie pisz jak nie znasz rozwiązania.
Prostokąt to jeden z bardziej trywialnych przypadków, ale jak wiesz (choć chyba raczej nie wiesz) jest jeszcze nieskończona ilość figur geometrycznych a Twój algorytm ... no cóż. Nie działa. Za mało jeszcze wiesz lub masz za słabą wyobraźnię ![]() |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Jak zwykle się czepiasz szczegółów nie mam zamiaru nic ci udowadniać,
ale zwróć uwagę że chodziło mi o pokazanie sposobu w jaki powinno się patrzeć na to zadanie. Rozwiązanie podałem dobre a zamiast się czepiać napisz mu kod panie mądralo. ![]() |
|
|
![]()
Post
#6
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Rozwiązanie podałem dobre (...) Proszę nie pisz takich rzeczy.Naplułem na monitor ze śmiechu ![]() To teraz mi pokaż jak to Twoje "dobre" rozwiązanie zadziała dla powiedzmy dowolnego sześciokąta z dziurą w środku gdzie punkt jest wewnątrz dziury? Uwierz mi, to zadziała tylko dla prostokąta (no może jeszcze fartownie dla jakiejś innej figury). ~maniak11 rozwiązanie tego problemu za pomocą PHP (bądź JS) nie będzie takie proste. Będzie wymagało masę obliczeń matematycznych. Zasada jest (wydawałoby się) bardzo prosta. Każda prosta przechodząca przez punkt wyznaczona w dowolnym kierunku może przecinać boki wielokąta w parzystej liczbie punktów. Jeśli istnieje prosta prosta mająca nieparzystą ilość punktów wspólnych z bokami wielokąta to punkt należy do obszaru wielokąta. (to samo jest zresztą napisane w podanych wyżej linku) Obliczenie tego jest bardzo trudne więc zastanów się czy jest Ci to potrzebne ![]() |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 18.03.2006 Skąd: Sosnowiec Ostrzeżenie: (0%) ![]() ![]() |
Dzięki bartek00 za tego linka, tekst jest zakręcony jak słoik na zimę ale postaram się przez niego przebrnąć. Pozostaje tylko pytanie jak przekazać zmienną (np. po kliknięciu w obrazek) do php aby ten mogl dalej z tym robić co trzeba, z tego co wiem to za pomocą samego tylko JS się nie da (co innego AJAX) tyle tylko że z tym nie miałem do czynienia i nie umiałbym zrobić tego aby nie bylo okupione przeładowaniem strony. W sumie to moze sie nawet przeładowac byle by tylko pobrac te wartości. Dzięki za pomoc
Dzięki mike_mech, niestety jest mi to potrzebne bo pisze prace mgr i jest to jedna z rzeczy do zrobienia przy ktorej utknąłem ![]() Ten post edytował maniak11 12.04.2007, 20:04:05 |
|
|
![]()
Post
#8
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki mike_mech, niestety jest mi to potrzebne bo pisze prace mgr (...) ![]() Na dobrą sprawę tak jak mówiłem, nie jest to trudne ale wymaga masę obliczeń. Jeśli masz do czynienia tylko z wielokątami (nie tylko wypukłymi) to nie jest tak tragicznie. Mając wszystkie wierzchołki, wyliczasz wszystkie proste, w których zawieają się krawędzie. To będzie akurat proste, pomimo, że może czasochłonne. Potem wyliczasz wszystkie proste przechodzące przez dany punkt. Dla sprawienia że obliczenia będą wykonalne w ograniczonym czasie możesz zawęzić ich ilość do 360 ![]() Teraz najważniejsze: Bierzesz prostą przechodzącą przez punkt i liczysz ilość przecięć z wszystkimi krawędziami. Jeśli ilość jest parzysta to bierzesz kolejną prostą i ponawiasz obliczenia. Jeśli ilość jest nieparzysta to punkt należy do figury. Obliczeń będzie masa, wszystko najszybciej pójdzie na macierzach, choć podejrzewam ze PHP i tak zdechnie po drodze z 10 razy. Nie nadaje się do takich obliczeń. Tak to wygląda w skrócie, być może w implementacji jest do prostsze bo to co napisałem to bezpośrednie przeniesienie twierdzenia na kod. Poszukaj implementacji, być może jest prostsza od tego co napisałem, nie wiem bo nigdy nie potrzebowałem. Jeśli nie znajdziesz implementacji tego algorytmu to czeka Cię ogrom pisania. Z niepewnością, że PHP to dźwignie. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 18.03.2006 Skąd: Sosnowiec Ostrzeżenie: (0%) ![]() ![]() |
Dzieki wielkie za informacje, poszukam czegoś w necie, może coś będzie, na tej stronce co bartek00 podal są implementacje tyle że nie w php, poszukam czegoś bo jak pomysle o pisaniu tego to...brrrr
![]() |
|
|
![]()
Post
#10
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
(...) na tej stronce co bartek00 podal są implementacje tyle że nie w php (...) Oo, nawet nie zwróciłem uwagi.Nooo, to stary masz gotowca jedym slowem. Przepisanie tego na PHP to nic trudnego. Pikuś bym rzekł. Większa trudność niż to obisanie tego jakimś układem współrzędnych, rysowanie figur na nim na podstawie dancyh z bazy a potem pobieranie współrzędnych punktu do obliczeń. Na kiedy masz to mieć ![]() Bo wiesz (Uwaga: Teraz nastąpi autoreklama) jest magistrem matematyki ![]() Mógłbym Ci to machnąć ale dopiero za jakiś miesiąć. Do tego czasu sam to napiszesz ze dwa razy ![]() |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 18.03.2006 Skąd: Sosnowiec Ostrzeżenie: (0%) ![]() ![]() |
Hehe, dzięki, prace mam oddać standardowo do końca czerwca więc czasu trochę jest ale miesiąc to rzeczywiście kupa czasu więc mam nadzieje ze za ten czas będę duużo do przodu:) Dzięki Ci jeszcze raz, cieszy mnie że są jeszcze tacy ludzie jak Ty, pozdrawiam, hey
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
A może podejść do tego od innej strony?
Zamiast tworzyć matematyczny wzór wszystkich tych figur, i matematyczną analizę ich struktury, może łatwiej byłoby po prostu odczytać kolor pixla na utworzonym wcześniej obrazku? W ten sposób analizę matematyczną i tworzenie figur zostawiamy bibliotece GD, która i tak to musi zrobić podczas ich rysowania, a nam pozostaje jedynie zatroszczyć się o to, by każda z figur miała inny kolor. Cytat imagecolorat" title="Zobacz w manualu PHP" target="_manual — Get the index of the color of a pixel Opis int imagecolorat ( resource $image, int $x, int $y ) Ad 2. - pobranie współrzędnej gdzie obrazek został kliknięty jest bardzo proste. Wystarczy zrobić <input type="image" src="adres obrazka" /> Ma on nie tylko funkcjonalność submit, ale wysyła również współrzędne x i y kliknięcia. ps. Choć tak naprawdę - rozwiązałbym ten problem chyba raczej w Flash, gdzie utworzyłbym mechanizm do rysowania figur geometrycznych, tworząc z nich od razu buttony. Pozwoliłoby to urozmaicić prezentację o elementy animacji ![]() -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 18.03.2006 Skąd: Sosnowiec Ostrzeżenie: (0%) ![]() ![]() |
DeyV: Też myślałem o tym żeby pobrać kolor obrazka tym bardziej że kolor zapisany jest w bazie mysql i takie figury są rysowane jaki kolor jest w bazie, niestety jednak nie mogę zrobić tak żeby każda figura miala inny kolor bo ma to być fragment mapy więc ulice będą mialy ten sam kolor, budynki ten sam itd.
Ciekawy sposób na pobranie współrzędnych x,y swoją drogą. dzięki za pomoc. Jeśli chodzi o flasha to z początku chciałem to tak zrobić ale usłyszałem od genialnej Pani opiekun że nie jest to narzędzie do tego typu zadań. No cóż...wystarczy wejsc na mapa.pf.pl aby się o tym przekonać. Teraz to już za dużo zrobiłem żeby wszystko na AS-a przenosić. Dzieki jeszcze raz |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 09:44 |