|
不知道大家有没有这种感觉 挖国境图遇到中部坐标的时候 总要想走CA下面还是走YZ比较快 之前最简单的方法的就是X坐标大的走YZ Y坐标大的走CA下面 但是遇到中部位置的 就不那么准确的 于是 LZ就想了用数学的方法解决的这个问题。
首先 全程能不算高 高中数学都足够用了(LZ师范毕业 不是数学) 主要用到的事中垂线定理 和一些简单的平面解析几何内容
首先是中垂线定理:取线段的中点 作与该线段所在直线的垂线 垂足为该中点 所得的垂线就是该线段的中垂线 中垂线上的点到两个线段的端点距离相等
中垂线定理告诉我们一个信息:线段的中垂线将平面分成了两部分 一部分到其中一个端点的距离更小 另外一部分到另一个端点的距离更小
所以说 我们把国境两个出口所连线段的中垂线找到 将国境分成两部分 那么就可以知道走哪一个点更近了
下面就要用到解析几何的内容了 先看图:
两个出口的点分别是(82,250)和(337,146) 根据解析几何中的中点坐标公式((x1+x2)/2,(y1+y2)/2) 就可以得到中点坐标(209.5,198)
点出来了 那么只要知道斜率 直线也就定下来了 斜率k要怎么求呢 可以通过两条垂直直线的斜率相乘等于-1这个定理 求出两个出口所连直线的斜率k1 k=-1/k1就可以了
k1=(y1-y2)/(x1-x2)=(250-146)/(82-337)=-104/255 那么k=-1/k1=255/104
直线方程用点斜式带入:y-198=255/104(x-209.5)
这里的话 如果直接展开就太复杂了 于是LZ做了近似处理 255/104=2.451923077≈2.5(如果取2.45虽然精确了 但是计算还是很麻烦 换一个角度来说 在线附近的点 随便那边去都差不多啦 我们只关注大部分的点就可以了)
这个时候直线方程就是 y-198=2.5(x-209.5) 展开并化成整数得到 10x-4y-1303=0
这条线就把国境分成了两部分 我们就可以把目标点带入直线方程的左边 算出来的数和0比较 就知道在哪里一边 那么到底大于零和小于零分别属于哪一边呢 这个需要验证一下 我们只需要代一个点进去算一下就知道了 为了方便计算我们代原点(0,0) 得到10*0-4*0-1303=-1303<0 所以原点所在的左边就是小于0的区域 右边是大于0的区域
只要我们以后将目标坐标点 代入10x-4y-1303 算出结果 就知道走哪一边更近了
呼呼 终于写完了。
|
|