Autor Zpráva
CDsk
Profil *
mam dva body:
bod1.x
bod1.y

bod2.x
bod2.y

a potrebujem zistit uhol medzi nimi ,uz dva dni sa nad tym lamcujem ,pomozte.
habendorf
Profil
To je přece elementární matematika :o)

uhel = arctg [(y2-y1)/(x2-x1)]
habendorf
Profil
BTW, úhel mezi dvěma body je nesmysl, resp. je roven nule. Tohle je úhel mezi osou x a spojnicí těch dvou bodů.
CDsk
Profil *
NEJDE!
BTW: ty si myslis ,ze keby to bolo takto jednoduche ,tak by som to nevedel!
//myslel som ,ze po prepocitani radianou na uhly to pojde ,ale ani tak to nejde.
//jj myslel som uhol osi k tymto dvom bodom ,ale myslim ,ze kazdy to urcite pochopil ,aj ked som tam nespomenul x os.
habendorf
Profil
Já nevím jak je to v AS, napsal jsem jen řešení z pohledu matematiky. Ale za tím si stojím. Samozřejmě je potřeba ošetřit dělení nulou.
Timy
Profil
CDsk
Matematicky to habendorf napsal správně, ve flashi by pak ten zápis měl vypadat takhle:

uhel=Math.atan((y2-y1)/(x2-x1));
CDsk
Profil *
skus to!
,daj trace(Math.atan((y2-y1)/(x2-x1)));
a skontroluj to ,... nefunguje to.

//jasne ze v matematike je to spravne ,ale nejde to zial vo flashi.
Steve
Profil
samozrejme si nejdriv musis nadefinovat promenne x1, x2, y1 a y2, nejlepe jako Number, jinak to to logicky nic nevyplivne
pheros
Profil *
CDsk-> ma pravdu nevychadza to ,alebo vychadza to len pre jeden/dva kvadrant-y ,ostatne nefunguju.
Hanz
Profil
Já si nemůžu pomoct, ale mi to vychází přesně. A to pro všechny kvadranty. Napište někdo příklad hodnot pro které mu to nevychází.
Chamurappi
Profil
Reaguji na habendorfa:
Samozřejmě je potřeba ošetřit dělení nulou.
Pracuje-li ActionScript s čísly stejně jako JavaScript, což je pravděpodobné, tak to potřeba není. Dělení nulou není v JS chyba.
thingwath
Profil
Jak to s NaN udělá ten arctg?
Chamurappi
Profil
Reaguji na thingwathe:
Výsledek dělení nulou není NaN, ale Infinity. Takže Math.atan(1/0) vrátí přesně to, co se od něj očekává, půl π.
thingwath
Profil
A když to bude Math.atan(0/0)?
Chamurappi
Profil
Reaguji na thingwathe:
Dobře, nevyjádřil jsem se přesně. Výsledkem dělení nulou je buď -Infinity, nebo NaN, nebo +Infinity.
Math.atan(NaN) vrací NaN, což asi nepřekvapí.
thingwath
Profil
Nepřekvapí. Ale ošetřit by se to asi mělo, takže se nakonec něco ošetřit bude muset...
thingwath
Profil
Staří Římani byli borci. Považte, svět kde nemůžete mít v bance na kontě nulu...
nemesix
Profil
kedisy som robil daco podomne ,snad ti to pomoze:



function zisti_uhol(x1:Number,y1:Number,x2:Number,y2:Number) {
if (y1<=y2){
return -((Math.atan((x1-x2)/(y1-y2)))*180)/Math.PI;
} else {
return 180-((Math.atan((x1-x2)/(y1-y2)))*180)/Math.PI;
}
}
Anonymní
Profil *
to predtym nefungovalo pri nulovom uhle ,toto funguje cele na 100%

function zisti_uhol(x1:Number,y1:Number,x2:Number,y2:Number) {

var lenx = x1-x2;
var leny = y1-y2;

var radiany = Math.atan2(leny, lenx);
var stupne = Math.floor(radiany/(Math.PI/180));

//var vzdialenost = Math.sqrt((lenx*lenx)+(lenyy*leny));

return stupne;
}
Toto téma je uzamčeno. Odpověď nelze zaslat.