作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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/
我是一名优秀的程序员,十分优秀!