Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Poluprava koja sece krug

[es] :: Matematika :: Poluprava koja sece krug

[ Pregleda: 4414 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

StefanJer91
Stefan Jeremic
Beograd

Član broj: 121923
Poruke: 160
212.62.51.*



Profil

icon Poluprava koja sece krug22.01.2008. u 20:33 - pre 196 meseci
Aj prvo da kazem za sta mi ovo treba:

Ja se bavim programiranjem, tj programiranjem igara za cije je pravljenje potrebno dosta matematike tj. logike uopste. Igra na kojoj radim je sidescroller (gleda se sa strane kao u super mariju), stim sto je dosta naprednije. Posto sam uspeo da uradim fiziku za igru i detekciju kolizije za razlicita geom. tela, bilo mi je potrebno da odradim lasere kojih ce biti u igri. Kako bi igra brze radila (bila optimizovanija), cela mapa u igri je podeljena na celije. Sve celije ustvari predstavljaju matrix. Celija sadrzi informaciju o tome kakva se tela nalaze u njoj (to su staticka i dinamicka). Laser se moze reprezentovati kao poluprava mada ga ja definisem sa 2 vektora. 1 vektor predstavlja njegovu poziciju, dok je drugi tu samo da bi odredio smer (dakle on moze biti jedinicni). Uspeo sam da napravi da lako pronadjem celije kroz koje zrak prolazi, za ovaj trenuto problem nije ni bitno kako. E sada za svaku celiju u kojoj je laser moze biti neki staticni objekat kroz koji laser ne bi trebalo da prodje. Jedan od staticnih objekata u igri je i krug. Ja sam dosta lupao glavu, ali nisam uspeo da pronajdem resenje kako bih ovo uradio sa vektorima, tako da mi je na kraju jedino preostala linearna f-ja i slucaj kada je laser paralelan sa y osom (dakle prava linija ali nije linearna f-ja ). Dakle ono sto mi je potrebno su tacke u kojima se prava i krug seku u slucaju da ih ima.

Evo kako sam to uradio preko linerne f-je:
laser predstavim kao lineranu f-ju tj. y = k*x+n
i imamo ovu jednacinu x^2+y^2 = R^2
Recicemo da je kordinatni pocetak u centru kruga. Dakle R nam je poznato i k i n nam je poznato, ostaje nam da nadjemo x i y:

x^2 + (k*x + n)^2 = R^2

x^2 + k^2*x^2 + 2*k*n*x + n^2 - R^2 = 0

Ovo je ustvari kvadratna jednacina:

(1 + k^2)*x^2 + 2*k*n*x + (n^2 - R^2) = 0

Radi bolje citljivosti bice da je:
A = 1 + k^2
B = 2*k*n
C = n^2 - R^2

determinanta je:
D = B^2 - 4*A*C

Dalje i sami znate kako da dobijete x i y... Ako je D = 0 znaci da prava tangira krug, ako je D > 0 znaci da ga sece pa imamo 2 resenja, a ako je D < 0 znaci da se krug i prava ne seku. Dakle moje pitanje je dal postoji nacin da se ovo odradi vektorski? Od informacija posedujete pocetnu tacku lasera, njegov smer (moze biti to drugi vektor, ugao nije ni bitno..) i naravno poziciju centra i poluprecnik kruga. Izvinjavam se za ovoliki tekst, koji ni nije bio potreban, al jbg kad sam se vec raspisao :)
The earth teaches us more about ourselves than all the books. Because it resists us. Man discovers himself when he measures himself against the obstacle.
 
Odgovor na temu

miki069

Član broj: 161528
Poruke: 1951
212.62.55.*



+370 Profil

icon Re: Poluprava koja sece krug24.01.2008. u 20:18 - pre 196 meseci
U slucaju kad prava tangira krug ugao cije je teme dodirna tacka a kraci (dodirna tacka - polazna tacka) i (dodirna tacka - centar kruga) je ugao od 90 stepeni. Mozes lako da odredis ugao pod kojim se iz pocetne tacke lasera vidi krug. Za sve manje uglove od tog ugla ga sece, za taj ugao ga tangira, a za sve vece ga masi. Ako sam te dobro razumeo ti mozes kao informaciju da imas ugao cije je teme polazna tacka lasera a kraci (laser-centar kruga) i ( poluprava - putanja lasera). Ako nije jasno drugi put ide slika i formula za ugao pod kojim se iz date tacke vidi dati krug. Ne bi bilo lose da ti okacis sliku i naznacis sta imas a sta trazis, mada mislim da sam te dobro razumeo.
 
Odgovor na temu

StefanJer91
Stefan Jeremic
Beograd

Član broj: 121923
Poruke: 160
212.62.51.*



Profil

icon Re: Poluprava koja sece krug24.01.2008. u 21:08 - pre 196 meseci
Da dobro si razumeo, samo su mi potrebne tacke preseka ako ih ima. Ovo sto si ti rekao je provera da li prava sece ili nesece krug, a ne daje informaciju o tackama. Dakle u prethodnom postu sam objasnio kao sam to uradio sa sistemom jednacina od 1 kvadratne i 1 linearne f-je, a mene zanima da li to moze da se uradi vektorski.
The earth teaches us more about ourselves than all the books. Because it resists us. Man discovers himself when he measures himself against the obstacle.
 
Odgovor na temu

miki069

Član broj: 161528
Poruke: 1951
212.62.55.*



+370 Profil

icon Re: Poluprava koja sece krug24.01.2008. u 22:14 - pre 196 meseci
1. "Vektorski" imas koordinate tacke T(X0, Y0) iz koje krece laser i idealno bi bilo da imas ugao alfa izmedju poluprave lasera i pozitivnog smera x-ose.
2. Moras da predjes u "skalarni" oblik ali je tebi sad nepoznata jednacina linerane funkcije kojom ide laser: y=k*x+n, to jest nepoznati su ti koeficijenti k i n.

3. k=tangens(alfa)
4. n pronalazis iz pripadanja tacke T(X0,Y0) putanji lasera: y=k*x+n odakle sledi da je Y0=k*X0 + n odnosno n=Y0 - k*X0
4. Posle njihovog nalazenja funkcionise ono sto si izlozio u tvom prvom postu.
 
Odgovor na temu

[es] :: Matematika :: Poluprava koja sece krug

[ Pregleda: 4414 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.