Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: unghi maxim  (Citit de 2959 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
soriyn
Vorbaret
****

Karma: 24
Deconectat Deconectat

Mesaje: 150



Vezi Profilul
« : August 01, 2011, 21:24:06 »

Am 2 puncte A(x,y) si B(x',y') si o multime de puncte de coordonate intregi. Cum as putea sa determin cu care punct din multime cele 2  formeaza un unghi maxim ? Adica cum aleg un punct C a.i. unghiul BCA sa fie maxim ?
« Ultima modificare: August 01, 2011, 23:56:03 de către Sorin R. » Memorat
crushack
De-al casei
***

Karma: 23
Deconectat Deconectat

Mesaje: 108



Vezi Profilul
« Răspunde #1 : August 01, 2011, 23:19:29 »

Le parcurgi, si pentru fiecare punct P(xp,yp) faci pantele pentru dreptele AP si BA, m1 respectiv m2, apoi faci m= (m1 + m2)/(1-m1*m2). apoi pt unghi faci atan(m). Si iei maximul Very Happy,

Sper ca te ajuta,

PS Sa-mi spui daca nu intelegi ceva
« Ultima modificare: August 01, 2011, 23:27:16 de către Popescu Silviu » Memorat
soriyn
Vorbaret
****

Karma: 24
Deconectat Deconectat

Mesaje: 150



Vezi Profilul
« Răspunde #2 : August 01, 2011, 23:45:41 »

Multumesc. Dar cred ca ai vrut sa zici AP si BP Confused


EDIT : scrisesem eu aiurea ,trebuia BCA  Rolling Eyes.  Mersi inca o data  
« Ultima modificare: August 01, 2011, 23:53:13 de către Sorin R. » Memorat
yonatan
Strain
*

Karma: 10
Deconectat Deconectat

Mesaje: 47



Vezi Profilul
« Răspunde #3 : August 02, 2011, 00:30:42 »

Cel mai simplu merge cu teorema cosinusului.
Cum stii coordonatele afli lungimile laturilor cu Th Pitagora si cosinusul unghiului cu Th cosinusului. In cazul in care vrei sa afli cel mai mare unghi sub 180o acesta va avea cosinusul minim, iar daca vrei pentru unghiurile mai mare de 180o acesta are cosinusul maxim.(pe [0,pi] cosinusul este strict descrescator).


O metoda mai grea ar fi cu cross product prin care putem afla sinusul. Dar nu este de ajuns deoarece sinusul nu este monoton pe [0, PI].
Deci trebuie sa aflam si daca unghiul trece in cadranul 2 sau nu.
Fie d' perpendicular pe dreapta AC in punctul B', B apartine d', daca B' apartine (AC) atunci masura unghiului este mai mica de pi/2, iar daca nu apartine este mai mare.
Pentru a afla daca B' apartine (AC) trebuie sa-i aflam coordonatele.
Scriem ecuatia dreptei AC si aflam panta. Cum d' perp. pe AC produsul pantelor este -1 => panta lui d' este (-1/(panta lui AC)).
Acum stim ca (y-yB)=panta(d')*(x-xB) si o putem rescrie sub forma ax+by+c=0.
Putem afla astfel coordonatele lui B' din cele 2 ecuatii pe care le verifica(ecuatia dreptei d' si a dreptei AC).
Pentru a afla daca B' apartine (AC) verificam daca coordonatele lui B sunt in interiorul celui mai mic dreptunghi determinat de A si C cu laturile paralele cu axele de coordonate. Daca apartine acestui dreptunghi atunci apartine si segmentului (AC).(segmentul AC este intersectia punctelor din interiorul dreptunghiului cu axa AC pe care B' se afla din ipoteza).


Sper ca am scris bine. Daca gasiti greseli va rog sa ma corectati.
« Ultima modificare: August 02, 2011, 13:00:09 de către Proistosescu George » Memorat
soriyn
Vorbaret
****

Karma: 24
Deconectat Deconectat

Mesaje: 150



Vezi Profilul
« Răspunde #4 : August 02, 2011, 18:00:42 »

Totusi metoda asta cu cross product mi se pare mai dificila. E mult mai usor cu pantele sau teorema cosinusului.
Memorat
klamathix
Echipa infoarena
Nu mai tace
*****

Karma: 733
Deconectat Deconectat

Mesaje: 1.216



Vezi Profilul
« Răspunde #5 : August 02, 2011, 18:07:38 »

http://cplusplus.com/reference/clibrary/cmath/atan2/
Memorat
yonatan
Strain
*

Karma: 10
Deconectat Deconectat

Mesaje: 47



Vezi Profilul
« Răspunde #6 : August 02, 2011, 18:21:30 »

Totusi metoda asta cu cross product mi se pare mai dificila. E mult mai usor cu pantele sau teorema cosinusului.
Da dar cross product e destul de folosit in probleme. Adica cu el poti afla ariile poligoanelor, poti sa afli daca 2 segmente se intersecteaza, poti sa afli infasuratoarea convexa si multe altele(vezi topcoder). Sa fiu sincer, e prima data cand folosesc teorema cosinusului la o problema de informatica.

Este buna si solutia cu tangenta unghiului format de cele 2 drepte! Poti aplica ce a zis Silviu si in cazul cand unghiul este ACB. Dar nu cred ca este nevoie sa calculezi arctangenta. Adica pe (0,pi/2) e pozitiva  si crescatoare iar pe (pi/2,pi) e negativa si crescatoare si la imagini egale ai argumente egale(in afara de 0 si pi) deci nu e nici o problema sa-ti dai seama daca unghiul x are masura mai mare ca unghiul y daca le stii tangentele.
« Ultima modificare: August 02, 2011, 18:39:56 de către Proistosescu George » Memorat
soriyn
Vorbaret
****

Karma: 24
Deconectat Deconectat

Mesaje: 150



Vezi Profilul
« Răspunde #7 : August 02, 2011, 18:28:13 »

@klamathix : Perfect !

@yonatan : Mda...trebuie sa ma pun la punct cu geometria  Weightlift
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines