Kezdőoldal » Számítástechnika » Programozás » Kört kellene kirajzoljak egy...

Kört kellene kirajzoljak egy program segítségével, mi lehet a hiba?

Figyelt kérdés

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?



2018. szept. 23. 14:29
 1/5 anonim ***** válasza:
100%

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

2018. szept. 23. 15:44
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:

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.

2018. szept. 23. 15:49
Hasznos számodra ez a válasz?
 3/5 anonim ***** válasza:
Annyit rosszul írtam, hogy r=100 és nem 10.
2018. szept. 23. 15:52
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:
100%
Ha "megengedik" akkor én matekos módszerrel kezdeném, és a koordináta geometria felírást átalakítanám trigonometriára ahol az x koordináta a cos(alfa) az y a sin(alfa) teljes körre, tudva, hogy a középpont 300,200 pont (ezzel a vektorral eltolva) és tudva, hogy a sugár 100 így a kör minden egyes pontjára igaz x=100*cos(alfa) és y=100*sin(alfa) és az alfa-t végig léptetni (majd kerekíteni a megjelenítéshez)
2018. szept. 23. 23:05
Hasznos számodra ez a válasz?
 5/5 A kérdező kommentje:
Köszönöm mindenkinek a válaszát!
2018. okt. 5. 22:01

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!