Fare hareket açısını derece olarak hesaplamak istiyorum. Fareyi düz bir çizgide hareket ettirmek zorunda olmadığınızı bildiğim halde, iyi bir dik açı oluşturmak için başlangıç ve bitiş noktalarına göre hesaplamayı deniyordum.Açıdaki fare hareketi açısının hesaplanması
log("ANGLE: " + getAngle(x1, y1, x2, y2));
garip sonuçlar veriyor:
ANGLE: 0.24035975832980774
mouse has stopped
ANGLE: 1.334887709726425
mouse has stopped
ANGLE: 0.2722859857950508
mouse has stopped
ANGLE: 0.3715485780567732
mouse has stopped
Kodu:
$("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. Radyenleri 180/PI ile çarpmanın neden derece verdiğini söyleyebilir misiniz? – Growler
Bu, radyan cinsinden bir derecenin tanımıdır. http://en.wikipedia.org/wiki/Radian#Conversion_between_radians_and_degrees – gcochard
Lol Bunu ben de görmeliydim. Son olarak, daire etrafında hareket ettiğimi fark ettim, her zaman bir '90' cinsinden derece veriyor. Örn: Menşei sağ üst çeyreğe taşıma 0 ila 90 derece aralığında olabilir. Kökenden sağ alt çeyreğe geçerken, 270-360 arasında değişen derecelerde beklerim. Bunu nasıl düzeltirim? – Growler