Kört kellene kirajzoljak egy program segítségével, mi lehet a hiba?
A kör egyenlete: (x-300)²+(y-200)²=100²
1. lépésként [0,2pi] közötti szögek cosinusát számítom ki, ez lesz az X koordináta.
2. lépésként az Y-nt kifelyezem az egyenletből és kiszámolom.
3. lépésként a kiszámolt koordinátára kirajzolom a pontot.
A gondoloatmenet matematikájában mi a hiba?
Ott, hogy így az x és y koordináta nem egész szám lesz, és csak egész indexű pixelek léteznek.
De ez csak sejtés.
Én úgy csináltam annak idején, hogy végigmentem egy dupla for ciklussal az összes x és y koordináta-páron, és megnéztem, hogy teljesül-e az adott értékekre az egyenlőség (természetesen kötelező a törteredmény miatt egy hibahatárt belevenni, pl. (x-300......) >= 100*100 -20 && x-300.....<=100*100+20
1. Amit X koordinátának írsz, azt még fel kell szoroznod a sugárral.
2. Az így kapott érték még mindig nem az X koordináta csak egy offset. Azaz a kör középpontjától vett előjeles távolság az X tengely mentén. Tehát a fenti egyenlet esetén az X koordinátáid: 300 + r * cos(alpha), ahol alpha fut 0 és 2pi között és r=10.
3. Elég 0 és pi között számolni szögeket.
4. Az egész koszinusz számolás felesleges. Az X koordinátáid a [300-r, 300+r] tartományból kerülnek ki. Ezt lehet egyenletesen mintavételezni.
5. Ne felejtsd el, hogy egy X-hez két Y eredmény tartozik, kivéve az intervallum végeit.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!