gpt4 book ai didi

java - 调试java函数返回点x沿线的距离

转载 作者:行者123 更新时间:2023-12-02 08:11:26 25 4
gpt4 key购买 nike

public Point getPointOnSegment(double length, int x1, int y1, int x2, int y2) {
if(length==0) return new Point(x2, y2);
double angle = Math.atan((double)(y2-y1)/(double)(x2-x1));

return new Point((int)((length*Math.cos(angle))+x1), (int)((length*Math.sin(angle))+y1));
}

我发现这个函数应该返回一条线上的点,该点沿所述线的距离为 x 。但由于某种原因,它有时会返回与预期相反方向的点。如果线的角度大于 180 度,似乎就会发生这种情况。

我已经研究这个问题超过 5 个小时了,我担心我对这个问题视而不见。谁能看出问题是什么,或者建议一个更好的函数来替代它?

最佳答案

问题是你的部门丢失了标志。例如,如果两个距离均为负值,则结果将为正值,因为两者均为正值。

尝试使用方法atan2计算角度:

angle = Math.atan2((double)(y2-y1), (double)(x2-x1));

此函数在所有情况下都会考虑差异的符号,并返回完整时钟的角度。它还处理 x2-x1 为零的特殊情况。

关于java - 调试java函数返回点x沿线的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7372536/

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