Chcę obliczyć kąt ruchu myszy w stopniach. Chociaż wiem, że nie musisz poruszać myszą w linii prostej, po prostu próbowałem obliczyć ją na podstawie punktów początkowych i końcowych, aby stworzyć ładny kąt prosty.Obliczanie kąta w stopniach ruchu myszy
log("ANGLE: " + getAngle(x1, y1, x2, y2));
daje dziwne wyniki:
ANGLE: 0.24035975832980774
mouse has stopped
ANGLE: 1.334887709726425
mouse has stopped
ANGLE: 0.2722859857950508
mouse has stopped
ANGLE: 0.3715485780567732
mouse has stopped
Kod:
$("canvas").mousemove(function(e) {
getDirection(e);
if (!set) {
x1 = e.pageX, //set starting mouse x
y1 = e.pageY, //set starting mouse y
set = true;
}
clearTimeout(thread);
thread = setTimeout(callback.bind(this, e), 100);
});
function getAngle (x1, y1, x2, y2) {
var distY = Math.abs(y2-y1); //opposite
var distX = Math.abs(x2-x1); //adjacent
var dist = Math.sqrt((distY*distY)+(distX*distX)); //hypotenuse,
//don't know if there is a built in JS function to do the square of a number
var val = distY/dist;
var aSine = Math.asin(val);
return aSine; //return angle in degrees
}
function callback(e) {
x2 = e.pageX; //new X
y2 = e.pageY; //new Y
log("ANGLE: " + getAngle(x1, y1, x2, y2));
log("mouse has stopped");
set = false;
}
Ah oops. Czy możesz mi powiedzieć, dlaczego pomnożenie radianów przez 180/PI daje stopnie? – Growler
To jest definicja stopnia pod względem radianów. http://en.wikipedia.org/wiki/Radian#Conversion_between_radians_and_degrees – gcochard
Lol Powinienem był to sprawdzić. Ostatnia rzecz, zauważyłem poruszając się po okręgu, to zawsze daje stopnie w kategoriach '90'. Przykład: Przesunięcie od punktu początkowego do prawego górnego kwadrantu może dać zakres od 0 do 90 stopni. Przechodząc od początku do niższego prawego kwadrantu, oczekiwałbym stopni od 270-360. Jak to naprawić? – Growler