gpt4 book ai didi

javascript - 笛卡尔到极坐标

转载 作者:可可西里 更新时间:2023-11-01 02:58:18 25 4
gpt4 key购买 nike

看看这里的例子: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);
}

当鼠标位于粒子(中心圆)的上方和右侧时,例如: enter image description here

控制台日志显示:

Particle: (300,250) Mouse: (326,223)
artan(-27 / 26) = angle: -46.08092418666069 - theta -0.8042638494191191

它应该是 arctan(27/26) = angle : 46 : theta = 0.8。因为即使鼠标位于中心“上方”,它也会将 y2-y1 读取为 -27,因为坐标系基于 0,0 左上角。

那么问题是当 X 和 Y 都为负时使 theta 为正,此时它应该指向相反的方向(从中心点向外)。我知道我可以在这里做一个 180 度的把戏,但我想了解我做错了什么。

最佳答案

在 Javascript 和许多语言中有一个 atan2功能来解决这个问题。它是一个带有 2 个参数(xy 坐标)的函数,因此系统可以对结果添加或减去 π 以生成正确的 Angular 。而不是打电话

Math.atan(y/x)

你只是调用

Math.atan2(y, x)

关于javascript - 笛卡尔到极坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8898720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com