Java 如何从Math.atan2中找到正确的象限?
我正在使用Java 如何从Math.atan2中找到正确的象限?,java,Java,我正在使用Math.atan2通过提供θY和X来获得θ,但是如何获得右象限 这个代码正确吗?我正在使用SVG,我需要将圆定位在右象限中 double angle = Math.atan2(y, x); if (angle >= 0 && angle < Math.PI/2 ){ // 1st } else if (angle >= Math.PI/2 &&am
Math.atan2
通过提供θY
和X
来获得θ,但是如何获得右象限
这个代码正确吗?我正在使用SVG,我需要将圆定位在右象限中
double angle = Math.atan2(y, x);
if (angle >= 0 && angle < Math.PI/2 ){
// 1st
}
else if (angle >= Math.PI/2 && angle < Math.PI) {
//2nd
}
else if (angle >= - Math.PI && angle < -(Math.PI/2)) {
//third
}
else if (angle >= -(Math.PI/2) && angle < 0) {
// fourth
}
double angle=Math.atan2(y,x);
如果(角度>=0&&angle=Math.PI/2&&angle=-Math.PI&&angle<-(Math.PI/2)){
//第三
}
否则如果(角度>=-(数学PI/2)和角度<0){
//第四
}
除了一些小问题外,您的代码似乎可以正常工作
我将替换所有的=
和
和
除非您希望在象限中包含轴。/p
从理论上讲,如果你只是想知道圆的位置,为什么不使用你已有的(x,y)对呢?如果您必须使用polar,那么您可以信任codeatan2/code来给出正确的象限。但是,如果您只需要找到象限,似乎根本不需要使用codeatan2/code,因为您已经有了codex/code和codey/code值。(你可以检查codex>0&&y>0并说这是第一象限,等等)我实际上需要使用polarI,认为svg足够复杂,只需给出
(r,θ)
。为什么你需要象限?我在遵循一个算法,在这个算法中,我必须将一个随机圆放置在距离最短的现有圆附近。我必须确保角度保持不变。因此,如果新的圆最终位于第一象限,我必须设置x=CX+R*cos(θ)
和y=CY+R*sin(θ)
,同样,如果它位于第二象限,我必须设置x=CX-R*cos(θ)
和y=CY+R*sin(θ)
。在这里解释可能太长了。所以我需要知道正确的象限,以便在需要时进行减法。我不确定这是否清楚,不管怎样,我认为你回答了我的等式。如果你有进一步的输入,请让我知道!好的,sin
和cos
的值都是从-1
到1
,所以你只需要推一下theta
,sin
和cos
函数就可以帮你减法了,对吗?