Håller på med ett javascriptsspel i stil med zelda och har hittat en sak jag inte klarar av. Tangens för vinkeln du söker är (200-20) / (400-100) = 180 / 300 = 18 / 30 = 3 / 5. Så du tar alltså atan för 3/5 så får du svaret: hmm, vet inte om jag är rätt ute men.. Glöm inte att ta hänsyn till om den "högra punkten" ligger under eller över den vänstra. Ligger den under bör man i princip byta kvadrant. Svaret blir mad andra ord -atan(3/5) i exemplet. okej, nu börjar det lossna lite grann, men pannan är fortfarande i djuoa veck.. Lade upp ett test, målet är att utirån vilken vinkel jag får fram, byta bild på gubben så den passar ihop med åt vilket han rör sig.. Det är inte det att atan(x) ger vinkeln i radianer i stället för i grader som gör att du får fel. 180 grader = pi radianer. detta fick jag på dhtmlcentral, funkar prima..räkna ut vinkel från två koordinater
Måste räkna ut vinkeln mellan två koordinater och har ingen större pejl på hur man gör, matte var inte mitt bästa ämne, speciellt inte cos och sin..
första pricken har t ex x:100 och y:200
och punkten jag ska räkna till har x:400 och y:20
nån som kan knäcka detta?
PeppeSv: räkna ut vinkel från två koordinater
vinkeln = Math.atan(3/5);
(Observera att detta är vinkeln mot horisantalplanet.)Sv: räkna ut vinkel från två koordinater
det jag vill ha reda på är vinkeln på linjen mellan koordinaterna i förhållande till horisonten, är detta på rätt spår?
peppeSv: räkna ut vinkel från två koordinater
Anledningen är att tan(x) = tan(-x).
/COSv: räkna ut vinkel från två koordinater
får försöka se om jag lyckas med det hela, eller du råkar inte ha någon vettig kod för detta? för det som jag får ut är inte rätta gradtal iallfall..
PeppeSv: räkna ut vinkel från två koordinater
http://www.blueboy.nu/blat/rpg/rpg.asp
PeppeSv: räkna ut vinkel från två koordinater
/COSv: räkna ut vinkel från två koordinater
function square(x) { return (x*x); }
function root(x,y) { return Math.pow(x,1/y); }
function degToRad(x) { return ((x*Math.PI) / 180); }
function radToDeg(x) { return ((x*180) / Math.PI); }
function angle_atan(s,t) {
if( s == 0.0 && t > 0.0) angle = 90.0;
else if(s == 0.0 && t < 0.0) angle = 270.0;
else if (s < 0.0 ) angle = 180.0 + radToDeg(Math.atan(t/s));
else if (s > 0.0 && t < 0.0) angle = 360.0 + radToDeg(Math.atan(t/s));
else {
if(s==0.0) s=0.00001;
angle = radToDeg(Math.atan(t/s));}
if(angle < 0.0) angle += 360.0;
if (angle < 45 || angle > 315) flip('char','skeleton_0.gif')
if (angle >= 45 && angle < 135) flip('char','skeleton_90.gif')
if (angle >= 135 && angle < 225) flip('char','skeleton_180.gif')
if (angle >= 225 && angle < 316) flip('char','skeleton_270.gif')
}