Ĺadny brzuch
Witam
W Operze są "gesty myszy"... Zastanawiałem się jak zrobić coś podobnego tyle że najpierw można by zdefiniować swój własny ruch, następnie przypisać do niego np. uruchomienie jakiegoś programu i zapisać go do pliku. Potem po naciśnięciu i przytrzymaniu PPM i wykonaniu gestu nastąpiło by jakieś zdarzenie (jak w Operze ;) ). Myślałem nad tym, że co milisekundę Timer zapisywał by położenie kursora, ale wtedy gesty musiały by zaczynać się w dokładnie na takich samych współrzędnych, no a potem kolejne położnia musiały by się zgadzać :huh: wię jest to trochę trudne, żeby wykonać identyczny ruch dwa razy :lol: ... Jeśli macie jakieś pomysły to piszcie :D .... Z góry dzięi za odpowiedzi...
nie wiem jak to napisać, ale lubie tłumaczyć swoją teorią... więc włącz painta i najedź kursorem gdzieś na środku obrazu [czystego obrazu nawet].
Przykładowo mamy kursor w położeniu 300, 200..
Teraz ruszamy w prawo o kawałek aż dojdziemy do 400,200 - to ruch prawo który zapisaliśmy uprzednio
Teraz by to powtórzyć to odejmijmy te wartości - zosaje 100, 0
I w tym momencie wystarczy że niech ktoś ruszy o 100 w prawo byle skąd... A jak zrobić by było byle skąd?
W ten sam sposób jak i wtedy ktoś jest potem w pozycji 59, 30 i przejeżdzą do 159, 40..
Taki ruch na ukos mały o 10 się będzie nie liczył a ruszono o 100 czyli tak jak chcieliśmy...
I już mamy swój cel, ale... Przecież mało kto wymierzy ponownie 100 więc za pierwszym razem się zapisze by ktoś ruszył o 100, lecz teraz by się liczba zaokrąglała:
od ruchu o 51 do 149 dajemy by :=100
teraz zajmijmy się ruchem na ukos (bo na góre i dół też wymodzisz):
jesteśmy w punkcie 300, 200 i gest to przesunięcie do 100, 400 - ruch w lewo i do dołu bądź właśnie ktoś ruszył na ukos... Jak to rozpoznać? Jeśli obie liczby się zmieniały w jednym czasie o dużą ilość oznacza to że był ruch na ukos, a jeśli raz najbardziej (o pareset w kilka milisekund) jedna liczba, a potem druga to ruch raz w tą, a raz w tą... Więc jeśli mamy już ten pierwszy warunek to:
różnica ogólnie o 200, 200 (ładnie się ułożyło) i wiadomo w jaką stronę... więc teraz wystarczy że ktoś ruszy w stronę lewego dolnego rogu myszkę o od 151, 151 do 249, 249 wtedy się wszystko zgodzi
jeszcze sprawa zaokgrąglania: 100 = od 51 do 149
lecz: 120 od 51 + 20 do 149 + 20
itd - z czytuje pierwszą liczbę i ilość znaków i wie jakie zaokrąglenie dać a 2 (lub więcej/mniej) dalsze liczby to o ile ma jeszcze to dodać/odjąć
Użytkownik tulio edytował ten post 19 lipiec 2005, 14:52
No tak.... :) . Te zaokrąglanie to jest myśl. Spróbuje to zastosować do bardziej wyrafinowanych gestów np. ósemki (bo takie miałem na myśli pisząc tego posta :) )... No, sie pobawie... jak coś wykombinuję to się pochwalę :D ...
Ja kiedyś myślałem nad problemem rozpoznawania. Wykombinowałem: Trzymając PPM rysujesz jakąś figurę, puszczasz PPM -> kończysz malować. Po drodze zapisujesz odlegości i zmiany ruchu kursora(zmiany kąta pod jakim porusza się kursor(w odpowiednio dużej skali np: 50 pikseli)). Zapisujesz to w jakiejś niewielkiej tablicy 2-wymiarowej(tak aby odpowiadały sobie graficzne). Porównujesz tą tablicę z zapisanym gdzieś wzorcem.
Wziąłem małą tablicę ponieważ, przy zapisie do niej sekwencji ruchów, zniweluje się małe odchylenia, drżenie ręki itp.
No dobra, a może jakiś przykładzik?
No dobra, a może jakiś przykładzik?
Tu masz wzorzec kwadratu
11111
10001
10001
10001
11111
Narysuj jakiś kwadracik w dużej rozdzieczości i zmniejszaj ją do 5x5.
Byłoby fajnie mieć program który sam by zadany rysunek zmniejszał.
Jeżeli to co narysowałeś chociaż przypomina kwadrat to po zmniejszeniu powinno być dość podobne do wzorca.
Tak przy okazji prac nad gestami... Jak można przemierzyć drogę przebytą przez kursor?? Pytam, bo sposób zapisu współrzędnych co pół sekundy Timerem okazał się chybiony. Bo przecież gest można wykonać szybko i wolno, więc poszczególne współrzędne mijały by się...
[...]
Przykładowo mamy kursor w położeniu 300, 200..
Teraz ruszamy w prawo o kawałek aż dojdziemy do 400,200 - to ruch prawo który zapisaliśmy uprzednio
Teraz by to powtórzyć to odejmijmy te wartości - zosaje 100, 0
I w tym momencie wystarczy że niech ktoś ruszy o 100 w prawo byle skąd
[...]
To są tzw. współrzędne relatywne :blink: , a co do tematu, to możesz porównywać gesty z wzorami za pomocą sieci neuronowych :P
Narazie procuję nad prostymi ruchami bo na "ósemki" i inne nie mam patantu :P .
Chciałem zrobić żeby po wciśnięciu PPM współrzędne X i Y zapisały by się do zmiennych, po puszczeniu PPM współrzędne zapisane wcześniej zostały by porównane z aktualnymi, no i jeśli zwiększył się tylko X to nastąpił ruch w prawo jeśli zwiększył się X i Y to znaczy że wykonano ruch skośny Góra-Prawo. Oczywiście przy liniach prostych zastosuję przybliżenie (bo nie mam linijki do myszki :D ;) ) i jeśli zostanie ono przekroczone to ruch zostanie uznany za ukośny.
Jest jedno ale :o ... jak wykryć, że PPM został wciśnięty i puszczony :blink: ?
Użytkownik BloodSam edytował ten post 26 lipiec 2005, 12:08
A wiec odpowiedz: onmousedown/Up ? Albo jakis hook ;) A tak w ogole to nie porownuj tylko poczatkowej i koncowej pozycji, bo jak ktos walnie jakas elipse to i tak zadziala... Trzeba jeszcze po przycisnieciu myszy sprawdzac pozycje w onmousemove...
To są tzw. współrzędne relatywne :blink: , a co do tematu, to możesz porównywać gesty z wzorami za pomocą sieci neuronowych :P
Sieć neuronowa :blink: :blink: ... no nie wiem co to ale to się wytnie :D ... No wiem, że onmousemove, onmousedown ;) . Problem jest z tymi Hook'ami... nie znam się na przechwytywaniu :( , coś czytałem na 4p ale nic nie czaje... Może znacie jakiś link gdzie się tego można nauczyć ;), przy okazji o tych sieciach neuronowych też bym chętnie poczytał :) ...
ściągnij sobie pakiet JEDI i tam masz komponent JvMouseGesture wraz ze źródłami
No jest takie cosik :) , jest jedno ale gesty myszy NIE działają poza aplikacją :(
Po długim szukaniu znalazłem bibliotekę, która pozwala na zastosowanie hooka w aplikacji :) LINK
Polecam :D Do tego jeszcze wspomniany pakiet JEDI LINK i spróbuje popracować nad gestami...
PS:
Może wie ktoś gdzie poczytam o tych sieciach neuronowych :blink:
Może wie ktoś gdzie poczytam o tych sieciach neuronowych :blink:
http://groups.google...682090b455b0e74
http://www.generatio.../gestureapp.asp
Użytkownik Futhark edytował ten post 21 sierpień 2005, 18:36
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
W Operze są "gesty myszy"... Zastanawiałem się jak zrobić coś podobnego tyle że najpierw można by zdefiniować swój własny ruch, następnie przypisać do niego np. uruchomienie jakiegoś programu i zapisać go do pliku. Potem po naciśnięciu i przytrzymaniu PPM i wykonaniu gestu nastąpiło by jakieś zdarzenie (jak w Operze ;) ). Myślałem nad tym, że co milisekundę Timer zapisywał by położenie kursora, ale wtedy gesty musiały by zaczynać się w dokładnie na takich samych współrzędnych, no a potem kolejne położnia musiały by się zgadzać :huh: wię jest to trochę trudne, żeby wykonać identyczny ruch dwa razy :lol: ... Jeśli macie jakieś pomysły to piszcie :D .... Z góry dzięi za odpowiedzi...
nie wiem jak to napisać, ale lubie tłumaczyć swoją teorią... więc włącz painta i najedź kursorem gdzieś na środku obrazu [czystego obrazu nawet].
Przykładowo mamy kursor w położeniu 300, 200..
Teraz ruszamy w prawo o kawałek aż dojdziemy do 400,200 - to ruch prawo który zapisaliśmy uprzednio
Teraz by to powtórzyć to odejmijmy te wartości - zosaje 100, 0
I w tym momencie wystarczy że niech ktoś ruszy o 100 w prawo byle skąd... A jak zrobić by było byle skąd?
W ten sam sposób jak i wtedy ktoś jest potem w pozycji 59, 30 i przejeżdzą do 159, 40..
Taki ruch na ukos mały o 10 się będzie nie liczył a ruszono o 100 czyli tak jak chcieliśmy...
I już mamy swój cel, ale... Przecież mało kto wymierzy ponownie 100 więc za pierwszym razem się zapisze by ktoś ruszył o 100, lecz teraz by się liczba zaokrąglała:
od ruchu o 51 do 149 dajemy by :=100
teraz zajmijmy się ruchem na ukos (bo na góre i dół też wymodzisz):
jesteśmy w punkcie 300, 200 i gest to przesunięcie do 100, 400 - ruch w lewo i do dołu bądź właśnie ktoś ruszył na ukos... Jak to rozpoznać? Jeśli obie liczby się zmieniały w jednym czasie o dużą ilość oznacza to że był ruch na ukos, a jeśli raz najbardziej (o pareset w kilka milisekund) jedna liczba, a potem druga to ruch raz w tą, a raz w tą... Więc jeśli mamy już ten pierwszy warunek to:
różnica ogólnie o 200, 200 (ładnie się ułożyło) i wiadomo w jaką stronę... więc teraz wystarczy że ktoś ruszy w stronę lewego dolnego rogu myszkę o od 151, 151 do 249, 249 wtedy się wszystko zgodzi
jeszcze sprawa zaokgrąglania: 100 = od 51 do 149
lecz: 120 od 51 + 20 do 149 + 20
itd - z czytuje pierwszą liczbę i ilość znaków i wie jakie zaokrąglenie dać a 2 (lub więcej/mniej) dalsze liczby to o ile ma jeszcze to dodać/odjąć
Użytkownik tulio edytował ten post 19 lipiec 2005, 14:52
No tak.... :) . Te zaokrąglanie to jest myśl. Spróbuje to zastosować do bardziej wyrafinowanych gestów np. ósemki (bo takie miałem na myśli pisząc tego posta :) )... No, sie pobawie... jak coś wykombinuję to się pochwalę :D ...
Ja kiedyś myślałem nad problemem rozpoznawania. Wykombinowałem: Trzymając PPM rysujesz jakąś figurę, puszczasz PPM -> kończysz malować. Po drodze zapisujesz odlegości i zmiany ruchu kursora(zmiany kąta pod jakim porusza się kursor(w odpowiednio dużej skali np: 50 pikseli)). Zapisujesz to w jakiejś niewielkiej tablicy 2-wymiarowej(tak aby odpowiadały sobie graficzne). Porównujesz tą tablicę z zapisanym gdzieś wzorcem.
Wziąłem małą tablicę ponieważ, przy zapisie do niej sekwencji ruchów, zniweluje się małe odchylenia, drżenie ręki itp.
No dobra, a może jakiś przykładzik?
No dobra, a może jakiś przykładzik?

Tu masz wzorzec kwadratu
11111
10001
10001
10001
11111
Narysuj jakiś kwadracik w dużej rozdzieczości i zmniejszaj ją do 5x5.
Byłoby fajnie mieć program który sam by zadany rysunek zmniejszał.
Jeżeli to co narysowałeś chociaż przypomina kwadrat to po zmniejszeniu powinno być dość podobne do wzorca.
Tak przy okazji prac nad gestami... Jak można przemierzyć drogę przebytą przez kursor?? Pytam, bo sposób zapisu współrzędnych co pół sekundy Timerem okazał się chybiony. Bo przecież gest można wykonać szybko i wolno, więc poszczególne współrzędne mijały by się...
[...]
Przykładowo mamy kursor w położeniu 300, 200..
Teraz ruszamy w prawo o kawałek aż dojdziemy do 400,200 - to ruch prawo który zapisaliśmy uprzednio
Teraz by to powtórzyć to odejmijmy te wartości - zosaje 100, 0
I w tym momencie wystarczy że niech ktoś ruszy o 100 w prawo byle skąd
[...]
To są tzw. współrzędne relatywne :blink: , a co do tematu, to możesz porównywać gesty z wzorami za pomocą sieci neuronowych :P
Narazie procuję nad prostymi ruchami bo na "ósemki" i inne nie mam patantu :P .
Chciałem zrobić żeby po wciśnięciu PPM współrzędne X i Y zapisały by się do zmiennych, po puszczeniu PPM współrzędne zapisane wcześniej zostały by porównane z aktualnymi, no i jeśli zwiększył się tylko X to nastąpił ruch w prawo jeśli zwiększył się X i Y to znaczy że wykonano ruch skośny Góra-Prawo. Oczywiście przy liniach prostych zastosuję przybliżenie (bo nie mam linijki do myszki :D ;) ) i jeśli zostanie ono przekroczone to ruch zostanie uznany za ukośny.
Jest jedno ale :o ... jak wykryć, że PPM został wciśnięty i puszczony :blink: ?
Użytkownik BloodSam edytował ten post 26 lipiec 2005, 12:08
A wiec odpowiedz: onmousedown/Up ? Albo jakis hook ;) A tak w ogole to nie porownuj tylko poczatkowej i koncowej pozycji, bo jak ktos walnie jakas elipse to i tak zadziala... Trzeba jeszcze po przycisnieciu myszy sprawdzac pozycje w onmousemove...
To są tzw. współrzędne relatywne :blink: , a co do tematu, to możesz porównywać gesty z wzorami za pomocą sieci neuronowych :P

Sieć neuronowa :blink: :blink: ... no nie wiem co to ale to się wytnie :D ... No wiem, że onmousemove, onmousedown ;) . Problem jest z tymi Hook'ami... nie znam się na przechwytywaniu :( , coś czytałem na 4p ale nic nie czaje... Może znacie jakiś link gdzie się tego można nauczyć ;), przy okazji o tych sieciach neuronowych też bym chętnie poczytał :) ...
ściągnij sobie pakiet JEDI i tam masz komponent JvMouseGesture wraz ze źródłami
No jest takie cosik :) , jest jedno ale gesty myszy NIE działają poza aplikacją :(
Po długim szukaniu znalazłem bibliotekę, która pozwala na zastosowanie hooka w aplikacji :) LINK
Polecam :D Do tego jeszcze wspomniany pakiet JEDI LINK i spróbuje popracować nad gestami...
PS:
Może wie ktoś gdzie poczytam o tych sieciach neuronowych :blink:
Może wie ktoś gdzie poczytam o tych sieciach neuronowych :blink:

http://groups.google...682090b455b0e74
http://www.generatio.../gestureapp.asp
Użytkownik Futhark edytował ten post 21 sierpień 2005, 18:36