我的rails应用程序中有两个模型:student和tutor。每个模型都有自己的位置属性:纬度、经度、半径(半径是由学生/导师输入的,因为他们决定要在多大程度上进行学习或教学)。经纬度由google api决定,我也可以通过api得到它们之间的距离。
它们之间的距离是距离,r1表示学生的半径,r2表示导师的半径。
现在我的工作是匹配符合条件r1和r2的学生和导师。我想出了解决办法:
match tutor and student if distance - r1 - r2 <= 0
然而,我不确定我的解是否准确,尽管我认为该算法涵盖了所有情况:
两个圆都有一个共同点。
两个圆都有两个共同点。
一个圆圈在另一个圆圈里。
我认为这不是一个困难的问题,但是我从高中开始有一段时间没有接触过几何,所以这里的任何建议都是值得赞赏的。
最佳答案
您还需要两个对象的位置x
,而不仅仅是半径r
。
两个圆相交时
dx = x1 - x2
dy = y1 - y2
dz = z1 - z2
sqrt(dx*dx + dy*dy + dz*dz) <= r1 + r2
剩下的很简单。