小弟刚跳槽到一家搞导航通讯软件(GPS)的公司,老板给我的第一个任务就是个算法问题:
每次处理50个位置点的数据,每个点数据包括(经度,纬度和方向角等).要求用一个矩形或六边形来大致描绘出汽车的运行
区域轨迹,该矩形或六边形要含盖所有点,可以是不规则的。要求在地图上显示这样的矩形或六边形.即得到各顶点的经度
和纬度坐标.(图形的生成要尽可能减小误差).怎样设计一个算法,使每次处理50个点的数据后都能生成这样的矩形
或六边形.如果50个点大致在一条路段上,就可以用矩形,但考虑到实际情况,很多路段都会转弯,所以六边形的情况
会比较多.也比较复杂.
  得到各顶点的经度,纬度坐标是难点.
    大家看看有什么好一点的方法来处理吗?
    对问题如果有什么不清楚的可以提出来.

解决方案 »

  1.   

    GPS来的数据就已经是经纬度了。
    用一个矩形把汽车运动轨迹的50个点都圈起来吗?那还不好算吗?
      

  2.   

    1,找到边界4点,根据是A(xmin,y1)(其中的y1可能有多个,只需取其中一个即可),B(x1,ymin),C(xmax,y2),D(x2,ymax)(其中y1,x1,y2,x2根据xmin,ymin,ymax,xmax可以确定)
    2,AH//y轴,BH//x轴,DE//BH交AH与E,CF//AH交BH与F,ED交CF与G
    3,如果AE方向,有A'点满足(xmin,y')则取E为最后多边形一个定点,如果没有A'取AE与AD之间距离AD最远点,为J',AJ'交DE与J,则J为其中一个顶点。
    4,如果AH方向有A'点满足(xmin,y')则取H为最后多边形一个定点,如果没有,取AB与AH间距离AB最远点K',取AK'与BH交点K作为多边形一个顶点。
    5,如果CG方向,有C'点满足(xmax,y')则取G为最后多边形一个定点,如果没有,取CG与CD间距离CD最远点L',取CL'与DG交点L作为多边形一个顶点。
    6,如果CF方向,有C'点满足(xmax,y')则取F为最后多边形一个定点,如果没有,取CF与CB间距离CB最远点M',取CM'与BF交点M作为多边形一个顶点。
    直线方程和距离都是加和、乘(除)、开方运算,在不在范围可以用直线方程大于或小于取得。焦点同样。但是如果嫌程序麻烦,可以做一下减缩。
    1,计算距离,但是不计算交点。前边说了距离很容易计算,交点需要列方程,如果不想写,可以直接取Jx=J'x,Jy=Dy;Kx=K'x,Ky=By;Lx=L'x,Ly=Dy;Mx=M'x,My=By.
    2,不计算距离,不计算交点。
    只需要对DE,DG,CF,BF,BK,AK,AE等分,设定最细致到多少次等分,包含则取点。