Взгляните на пример здесь: http: // www.brianhare.com/physics/so.html
Взгляните на console.log, где я использую эти две основные функции:
function distanceBetween2pts(x1, y1, x2, y2) {
console.log("Particle: ("+x1+","+y1+") Mouse: ("+x2+","+y2+")");
// Pythagoras Theorem
// PQ = sqrt( (x2-x1)^2 + (y2-y1)^2 )
var x = (x2-x1);
var y = (y2-y1);
this.radius = Math.sqrt(x*x + y*y);
this.x = x;
this.y = y;
}
function polar2cartesian(R, theta) {
this.x = R * Math.cos(theta);
this.y= R * Math.sin(theta);
}
Где, когда мышь находится выше и справа от частицы (центральный круг) Такие как :
В журнале консоли отображается:
Particle: (300,250) Mouse: (326,223)
artan(-27 / 26) = angle: -46.08092418666069 - theta -0.8042638494191191
где должно быть арктангенс (27/26) = угол: 46: тета = 0,8. потому что даже если мышь находится «над» центром, она считывает y2-y1 как -27, потому что система координат основана на 0,0, находящемся в верхнем левом углу.
Тогда проблема в том, что когда и X, и Y отрицательны, что делает тэта положительным, тогда он должен указывать в противоположном направлении (наружу от центральной точки). Я знаю, что могу просто сделать здесь трюк на 180 градусов, но я хочу понять, что я делаю не так.