怎么使用点查找线
来源:爱站网时间:2021-11-18编辑:网友分享
爱站技术小编正在尝试编写一种方法,却遇到一个问题:怎么使用点查找线?经过研究学习,现在已经找到了一个合适的方法去操作,大家可以参考一下。
问题描述
我正在尝试编写一种方法,该方法将遍历具有一个起点和终点或一个起点和两个终点的轨道列表。轨道只能是垂直或水平的。它们保存在List
中。 getStartPoint()
返回轨道的起点,getEndPoints()
返回具有一个或两个元素的List
。
private void findTrack(Point point) {
}
例如:
(1,1) -> (6,1),
(6,1) -> (8,1),(6,3)
(1,1) -> (-5,1)
[3,1)点位于哪条轨道上?答案:正轨(1,1)->(6,1)。
有人可以用这种方法帮助我吗?
思路一:
最简单(尽管不是最有效的方法)是使用Line2D.contains
。假设您将所有点都转换为Point2D
对象:
for (Track track: tracks) {
for (Point2D point: track.getEndPoints()) {
Line2D line = new Line2D.Float(point, track.getStartPoint());
if (line.contains(target))
return track;
}
}
思路二:
下面的解决方案将找到满足您要求的第一条轨道。如果Track
可以重叠,则需要在for
函数中修改findTrack
循环以返回所有合格的曲目。
import java.util.Arrays;
import java.util.List;
public class TrackTest {
public static void main(String[] args) {
List
以上内容就是爱站技术频道小编为大家分享的怎么使用点查找线,看完以上分享之后,大家应该都知道怎么查找了吧。