Prikaz jedne poruke
Stara 12.2.2014, 0:18   #124
ivan90BG
Veteran
 
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
Određen forumom Re: How to... Java

Moja greška, nisam primetio da je t dva puta izvađeno ispred zagrade. Nisam vido dodatne zagrade, pa mi se učinilo da su stepeni samo ispušteni. Naravno to sam primetio tek pošto sam iskucao podosta koda u matlabu da proverim da nisam lud, već sam počeo da se češem po glavi kako je moguće da njemu ta formula radi a kad je ja prekucam ne radi pre nego što sam uvideo šta je po sredi.

Inače ja sam pravio projekat za faks (upravo završio, sad pišem dokumentaciju) sa crtanjem vektorske grafike, između ostalog i kubne Bezijeove krive. Ja nisam kodirao formulu jer u Java2D api-ju cubic bezier jedna od primitiva (ima ih samo 3, to su linija, quad bezier i cubic bezier). Nisam koristio ni jednu javinu klasu poput CubicCurve2D već sam svaki objekat pisao od nule (jer sam patološki optimizator ). Ali formula će mi verovatno trebati ako budem dodavao programu mogućnost kao u onom javaskriptu.

Sada mi je problem hit test, odnosno selektovanje krive mišem. Jedan način je naći udaljenost tačke klika od krive, odnosno tačku na krivoj najbližu tački klika, ali za to mora da se reši polinomska jednačina 5. stepena u opštim brojevima, u šta ne bih da se upuštam. Drugi način koji mi je maločas pao na pamet je da dva puta rešim funciju krive kao jednačinu sa ubačenim vrednostima x i y iz tačke klika, za šta ima već gotova formula (jer je 3. stepena), da bih dobio dve vrednosti t. Ako je tačka jako blizu linije, valjda bi ove dve vrednosti trebalo da budu jako bliske, a što je tačka dalje od krive to različitije. Samo me brine preciznost, mislim da ako tu razliku između dve dobijene vrednosti t postavim na neku fiksnu vrednost, širina prihvatljive zone oko linije će verovatno da varira u zavisnosti od oblika krive.

Poslednja ispravka: ivan90BG (12.2.2014 u 0:50)
ivan90BG je offline   Odgovor sa citatom ove poruke