小弟关于由采样点求轨迹,然后判断是否相交的想法,请大家批评指正。

时间:2022-10-16 00:59:13
    我先说一下希望达到的目的。就是说采集人的某一时刻的位置信息,对其进行分析。判断两人是否相遇,判断某人是否经过一个区域。 
    对于人的信息已经获取了他的某一时刻(t)的坐标(x,y),且每隔一分钟进行人的信息的采样。 
    现在小弟有些问题想请教大家,希望大家各抒己见,给小弟指条路或者告诉小弟应该如何去考虑、要看什么书籍去学习解决这个问题或者使用什么算法。 
1.有了采样信息后,怎样把一个人在某一段时间的采样点连成此人在这段时间内的轨迹呢? (我的考虑是使用曲线拟合来描绘轨迹) 
  不知高手有没有其他的方法,大家各抒己见啊。 
某一个人的轨迹应该如何存储呢?请大家指教。 
2.在获得一个人轨迹的情况下,如何判断一段时间内两个人是否同时出现在某一点?? 
这里并不是判断两条线是否有交点,而是要在有交点的基础上判断是否两人在同一时间到达该点。 
3.在获得一个人轨迹的情况下,如何判断一个人是否经过某一区域(即一条曲线如何判断和一个不规则图形有交点)? 
(我的简单考虑是在解决第2个问题的基础上,做一条线将此区域分为两条手尾相接的曲线,判断一个人的轨迹和这两条曲线是否有交点)。 
因为小弟是菜鸟,希望多多指教。 

8 个解决方案

#1


我希望在java中实现 请教了

#2


1.当然是曲线拟合
2. 从曲线你无法判断是否“同时”到达,因为曲线无时间概念。只要在某个采样时刻两个人距离足够近,不就是同时到达了,如果任何一个采样时刻他们都不足够近,自然就没有同时到达(即使曲线相交也不行)
3. 交与否不就看它是不是经过曲面的边,如果你有曲面的边的方程,就可以和曲线方程求解看有没有合适交点

#3


第二个问题你说判断任一个采样点时刻都不足够近,这个实际操作起来效率岂不是很低下,有没有什么较好的算法啊 

#4


引用 2 楼 arong1234 的回复:
1.当然是曲线拟合 
2. 从曲线你无法判断是否“同时”到达,因为曲线无时间概念。只要在某个采样时刻两个人距离足够近,不就是同时到达了,如果任何一个采样时刻他们都不足够近,自然就没有同时到达(即使曲线相交也不行) 
3. 交与否不就看它是不是经过曲面的边,如果你有曲面的边的方程,就可以和曲线方程求解看有没有合适交点 

第二个问题你说判断任一个采样点时刻都不足够近,这个实际操作起来效率岂不是很低下,有没有什么较好的算法啊 
我的想法是做出来轨迹后,通过某种方法把它存储起来,这样每次比较的时候直接比较轨迹,若轨迹有交点,则返回到采样点中,看看两人这个采样点的时刻是否相同,若时刻相同即表明同时到达。

#5


轨迹怎么存储比较好呢 因为如果不存储的话 每次使用的话都要曲线拟合一次 效率不好啊

#6


存储轨迹的话只需要存储点位就行了,按照确定的某个规则拟合,点位固定了,曲线也就固定了,在判断是否相遇的问题上我建议楼主引入速度的概念,既这段曲线的长度除以时间(这里为单位时间,既1分钟),相交点位的位置就可以获得两个人到焦点的时间了,希望能够对LZ有所帮助。

#7


大家还有没有其他的意见啊

#8


引用 4 楼 tfuturer 的回复:
第二个问题你说判断任一个采样点时刻都不足够近,这个实际操作起来效率岂不是很低下,有没有什么较好的算法啊 
我的想法是做出来轨迹后,通过某种方法把它存储起来,这样每次比较的时候直接比较轨迹,若轨迹有交点,则返回到采样点中,看看两人这个采样点的时刻是否相同,若时刻相同即表明同时到达。

不清楚你说的这种方法为什么效率会更高!?对于一个合理的采样系统来说,采用数据的下标应该是和时间一致的,也就是曲线1的采样点的第k个点和曲线2的第k个点应该在同一时刻采样的,直接比较两个下标相同的点难道不比你那种先比距离再看时间好?你的方法到底要比较哪两者的距离呢?

#1


我希望在java中实现 请教了

#2


1.当然是曲线拟合
2. 从曲线你无法判断是否“同时”到达,因为曲线无时间概念。只要在某个采样时刻两个人距离足够近,不就是同时到达了,如果任何一个采样时刻他们都不足够近,自然就没有同时到达(即使曲线相交也不行)
3. 交与否不就看它是不是经过曲面的边,如果你有曲面的边的方程,就可以和曲线方程求解看有没有合适交点

#3


第二个问题你说判断任一个采样点时刻都不足够近,这个实际操作起来效率岂不是很低下,有没有什么较好的算法啊 

#4


引用 2 楼 arong1234 的回复:
1.当然是曲线拟合 
2. 从曲线你无法判断是否“同时”到达,因为曲线无时间概念。只要在某个采样时刻两个人距离足够近,不就是同时到达了,如果任何一个采样时刻他们都不足够近,自然就没有同时到达(即使曲线相交也不行) 
3. 交与否不就看它是不是经过曲面的边,如果你有曲面的边的方程,就可以和曲线方程求解看有没有合适交点 

第二个问题你说判断任一个采样点时刻都不足够近,这个实际操作起来效率岂不是很低下,有没有什么较好的算法啊 
我的想法是做出来轨迹后,通过某种方法把它存储起来,这样每次比较的时候直接比较轨迹,若轨迹有交点,则返回到采样点中,看看两人这个采样点的时刻是否相同,若时刻相同即表明同时到达。

#5


轨迹怎么存储比较好呢 因为如果不存储的话 每次使用的话都要曲线拟合一次 效率不好啊

#6


存储轨迹的话只需要存储点位就行了,按照确定的某个规则拟合,点位固定了,曲线也就固定了,在判断是否相遇的问题上我建议楼主引入速度的概念,既这段曲线的长度除以时间(这里为单位时间,既1分钟),相交点位的位置就可以获得两个人到焦点的时间了,希望能够对LZ有所帮助。

#7


大家还有没有其他的意见啊

#8


引用 4 楼 tfuturer 的回复:
第二个问题你说判断任一个采样点时刻都不足够近,这个实际操作起来效率岂不是很低下,有没有什么较好的算法啊 
我的想法是做出来轨迹后,通过某种方法把它存储起来,这样每次比较的时候直接比较轨迹,若轨迹有交点,则返回到采样点中,看看两人这个采样点的时刻是否相同,若时刻相同即表明同时到达。

不清楚你说的这种方法为什么效率会更高!?对于一个合理的采样系统来说,采用数据的下标应该是和时间一致的,也就是曲线1的采样点的第k个点和曲线2的第k个点应该在同一时刻采样的,直接比较两个下标相同的点难道不比你那种先比距离再看时间好?你的方法到底要比较哪两者的距离呢?