Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取一点和另一点之间的角度(三角函数)_Java_Trigonometry - Fatal编程技术网

Java 获取一点和另一点之间的角度(三角函数)

Java 获取一点和另一点之间的角度(三角函数),java,trigonometry,Java,Trigonometry,我得2分。基点和其他点。我需要得到一个角度,在这个角度上,基座应该移动,使另一个点和它相对。但可能性是从0到360度,而不仅仅是90度。 我现在应该用三角学来做,但我不知道怎么做。有人能解释一下我应该使用什么算法吗?还是粘贴溶液?谢谢,这确实是一个三角学问题,但听起来你基本上想要红色和黑色圆点之间的角度,然后再加上180度 然而: 数学atan2(y,x) 这里可以帮助你,因为你可以给它x坐标和y坐标的差,以得到一个角度(弧度) 你真的应该查一下trig,因为你可以在10分钟左右学会基本的东西

我得2分。基点和其他点。我需要得到一个角度,在这个角度上,基座应该移动,使另一个点和它相对。但可能性是从0到360度,而不仅仅是90度。


我现在应该用三角学来做,但我不知道怎么做。有人能解释一下我应该使用什么算法吗?还是粘贴溶液?谢谢,这确实是一个三角学问题,但听起来你基本上想要红色和黑色圆点之间的角度,然后再加上180度

然而: 数学atan2(y,x)

这里可以帮助你,因为你可以给它x坐标和y坐标的差,以得到一个角度(弧度)

你真的应该查一下trig,因为你可以在10分钟左右学会基本的东西。
“SOH-CAH-TOA”对你的一生都很有用。

这确实是一个三角学问题,但听起来你基本上想要红色和黑色圆点之间的角度,然后再加上180度

然而: 数学atan2(y,x)

这里可以帮助你,因为你可以给它x坐标和y坐标的差,以得到一个角度(弧度)

你真的应该查一下trig,因为你可以在10分钟左右学会基本的东西。
“SOH-CAH-TOA”对你的一生都很有用。

用这些点画一个直角三角形,然后看角度。如果您知道点的坐标,您将能够找到角度,因为您知道tringles的边

总的来说,应该是这样的:

double alpha = Math.atan((yb - yp) / (xb - xp));
在哪里

xb,yb是基点的坐标

xp,yp是红点的坐标

alpha
的单位是弧度,而不是度


请注意,
atan
将值从
-pi/2
返回到
pi/2
使用这些点绘制直角三角形并查看角度。如果您知道点的坐标,您将能够找到角度,因为您知道tringles的边

总的来说,应该是这样的:

double alpha = Math.atan((yb - yp) / (xb - xp));
在哪里

xb,yb是基点的坐标

xp,yp是红点的坐标

alpha
的单位是弧度,而不是度


请注意,
atan
返回从
-pi/2
pi/2

的值,可以通过执行以下操作获得角度:angle=Math.acos(单位向量(a).单位向量(b)),其中a和b分别是基点和初始方向之间的向量,以及基点和其他点之间的向量('.'代表点积) 如果希望角度以度为单位,请执行以下操作:angle=(angle*180/Math.PI)

如果您不懂向量,也不懂Java,请阅读以下内容:

您需要以下信息:

  • 基点的坐标。(表示为点对象基点,具有x和y)
  • 其他点的坐标。(其他点)
  • 基点最初指向的位置的坐标。(初始点)
  • (向量有两个分量,x和y。为具有双x和y的向量声明一个类,或使用点)

    在图中,如果需要向量(a),则执行newVector(基点、初始方向)

    类似地,向量(b)=新向量(基点,其他点)

    在图中,如果需要单位向量(a),请执行单位向量(向量(a))


    在图中,如果您想要单位向量(a)。单位向量(b),do dotProduct(单位向量(a),单位向量(b))

    可以通过do:angle=Math.acos(单位向量(a)。单位向量(b))获得角度,其中a和b分别是基点和初始方向之间的向量,以及基点和其他点之间的向量(“.”代表dot产品) 如果希望角度以度为单位,请执行以下操作:angle=(angle*180/Math.PI)

    如果您不懂向量,也不懂Java,请阅读以下内容:

    您需要以下信息:

  • 基点的坐标。(表示为点对象基点,具有x和y)
  • 其他点的坐标。(其他点)
  • 基点最初指向的位置的坐标。(初始点)
  • (向量有两个分量,x和y。为具有双x和y的向量声明一个类,或使用点)

    在图中,如果需要向量(a),请执行newVector(基点、初始方向);

    类似地,向量(b)=新向量(基点,其他点)

    在图中,如果需要单位向量(a),请执行单位向量(向量(a))


    在图中,如果需要单位向量(a)。单位向量(b),则执行点积(单位向量(a),单位向量(b))

    你所说的相反是什么意思?一个点可以有一个在无限方向上相反的点..p这是离题的,因为它本质上是一个数学问题。我建议买一本好的教材,涵盖三角学…与我画的线相反。这条线总是在北向(o度)你说的相反是什么意思?一个点可以有一个在无限方向上相反的点..这是一个离题的问题,因为它本质上是一个数学问题。我建议买一本好的教科书,涵盖三角学…与我画的线相反。这条线总是在北向(o度)那么,我应该如何将结果转换为度呢?只使用toDegrees()。@MichałTabor,是的,你可以使用
    数学。doDegrees(alpha)
    我按照你说的做了,但它没有返回正确的值。我尝试向它添加90,在这种情况下,当红点位于II和IV四分之一时,我得到了正确的值,但在I和III中,我得到了错误的值。。。(我在最左边)。@MichałTabor,用代码和错误案例更新你的问题。第三和第四季度你必须调整,注意我答案中的最后一行。那么我应该如何将结果转换为度?只使用toDegrees()。@MichałTabor,是的,你可以使用
    Math.doDegrees(alpha)
    我按照你说的做了,但没有
    unitVector(vector a)
    {
        vector new1 = new vector(0,0);
        new.x = a.x/(Math.sqrt(a.x*a.x + a.y*a.y));
        new.x = a.y/(Math.sqrt(a.x*a.x + a.y*a.y));
        return new1;
    }
    
    dotProduct(vector a, vector b)
    {
        double val;
        val = a.x*b.x + a.y*b.y;
        return val;
    }