请教一个超级难题——java根据定位坐标计算区域问题!
这些大概数据GIS方面的知识。问题描述:
在一个房间里(以房间一角做原点(0,0,0))
1. 使用定位装置得到一些坐标点(x,y),比如10个点,求10点框定的最大范围?能否算出?不能则取点不对。
2. 计算另一个坐标点(x,y)是否在10个点框定的最大范围之中?
我查询的资料当中都没有java计算这类问题的,请求高手给出一些解决思路就好!谢谢啊!

解决方案 »

  1.   

    你要研究算法就别跟java车上关系
    算法跟任何语言都没啥关系
      

  2.   

    问题描述:
    在一个房间里(以房间一角做原点(0,0,0))
    1. 使用定位装置得到一些坐标点(x,y),比如10个点,求10点框定的最大范围?能否算出?不能则取点不对。
    2. 计算另一个坐标点(x,y)是否在10个点框定的最大范围之中?
    我查询的资料当中都没有java计算这类问题的,请求高手给出一些解决思路就好!谢谢啊!这么简单的问题既然是房间,就统一为(x,y,z)1: 求10个点的最大包容盒  (如果你是要10个点确定的最小的多面体 以下计算可以忽略)
    设置P-Min(Xmin Ymin Zmin)(为Integer.MAX) P-Max(Xmax Ymax Zmax)(为Integer.MIN)
    循环10个点 逐次比较各点的x,y,z  写入最大点 最小点
    循环完毕,两个角点就出来了!2: 另一个坐标点(x,y,z)在这个范围内 直接与两个角点比较,是不是在范围内,很简单
      

  3.   


    这个可能是我没有说明清楚,现在附图一张,描述更加清楚,x,y的坐标可能出现(2.331,-5.215)负值,按照你说的,比较两个大小角坐标,但是如何比较?
    我附图说明
    这个图的x1,y1在6个坐标范围内,x2,y2不在范围内,但是x2,y2怎么比较合适呢?而且我不太理解你说的P-Min(Xmin Ymin Zmin)(为Integer.MAX) P-Max(Xmax Ymax Zmax)(为Integer.MIN)是如何得到坐标的最大最小的,大概方法是如何实现呢?
      

  4.   

    LZ的第一个问题是求多边形面积否?如果是的话,这个网上已经有很很多帖子讨论了,有用三角型切分求和的,有用积分的。第二个问题,凸多边形比较简单,我的想法是将10个点按x坐标排序,如果未知点的x坐标>Xmax,<Xmin,那么肯定落在框定的范围之外(同理可以对y坐标进行类似处理,以加快判断),如果是在这个{xi}集合之内,那么肯定是在Xi和Xi+1之间,那么用斜率比较就能确定。凹多边形比较复杂,再想想。
      

  5.   

    GIS实现这个比较简单,不知道他们底层是怎么写的
      

  6.   

    楼主我的第一个问题是要根据10个坐标点,坐标点按顺序得到,点与点之间有连线,最后组成一个多边形,就好像Google地球里面画面积一样的操作。但是有可能按顺序取得的坐标点会组不成合理的最大范围面积。所以我要计算出这些坐标点是否能组成最大范围面积,如果能组成,就按照坐标点的组成顺序排列。
    你的第二个建议我以前思考过的,但是检测坐标点是否在多边形区域内不是比较XY的最大最小可以的,比如我这个图上X2,Y2就符合你说的判断,但是明显是不在范围内的。所以我想有没有更好的方法呢?急求高手帮助啊!
      

  7.   

    平面问题!!java.awt.Polygon 类 里面有个contains方法不过这个类是按照你的点的顺序构造多边形的,有可能会是凹形,或者自身边交叉的,把点的顺序调整得到一个无交叉的点数组,构造Polygon 类,调用方法即可
      

  8.   

    所以是比较斜率,例如你那个图中,xix2两点的斜率要大于xixi+1的。对于凸多边形而言,Kxix2《Kxixi+1才在框定范围之内。对于凹多边形,需要保留边集信息来进行辅助判断。怎么会是比较X,Y坐标呢。
      

  9.   

    你说的靠谱了,我找到了这个接口Shape,描述的很是我想要的!我需要写个测试方法哦~先谢谢一下,等我搞定了给分哦!~