【问题标题】:java coding a solution in determining if a point lies on the interior of a polygon(rectangle)java编码确定点是否位于多边形(矩形)内部的解决方案
【发布时间】:2012-01-26 21:23:19
【问题描述】:

我正在阅读website 中的解决方案 3 (2D),并尝试将其转换为 java 代码。如果java是正确的,请评论。我使用的是纬度和经度坐标,而不是 x 和 y 坐标(注意:loc.getLongitude(),loc.getLatitude() 是在矩形内检查的点集,并且给定坐标(双精度)不是真实坐标还没有。

        double lat0 = 0.2;
        double long0 = 0.3;
        double lat1 = 1.2;
        double long1 = 1.3;
        double lat2 = 1.2;
        double long2 = 1.3;
        double lat3 = 1.2;
        double long3 = 1.3;
        double rel1 = (loc.getLongitude()- long0)*(lat1 - lat0)- ((loc.getLatitude()-lat0)*(long1-long0));
        double rel2 = (loc.getLongitude()- long1)*(lat2 - lat1)- ((loc.getLatitude()-lat1)*(long2-long1));
        double rel3 = (loc.getLongitude()- long2)*(lat3 - lat2)- ((loc.getLatitude()-lat2)*(long3-long2));
        double rel4 = (loc.getLongitude()- long3)*(lat0 - lat3)- ((loc.getLatitude()-lat3)*(long0-long3));

        if (rel1 >= 0 && rel2 >= 0 && rel3 >= 0 && rel4 >= 0 )
        {
            try
            {
            ..........
                            ..........
            }
        else
        {
            .........

        }
        }

【问题讨论】:

  • 错误 - 尝试没有 catch 块。代码审查的更好候选人。
  • 那是正确的......我认为它是在点上:)

标签: java android latitude-longitude


【解决方案1】:
  1. 所有 rel1..rel4 必须具有相同的符号,本质上不是正数,也许 - 都是负数。
  2. 它只适用于凸多边形。
  3. 我不知道在 3d 模型上使用 2d 算法是否公平(纬度和经度来自 ploar 坐标,不是吗?)。是的,在一般情况下,它会给出正确的结果,但在某些情况下,您需要处理这种情况,当直线连接“地球上”的两个点时,与投影中的情况不同。

【讨论】:

  • 1.是的,我想如果公式是相反的 2. 那是正确的 3. 我只是在寻找一个简单的代码,它可以给我估计的边界来确定移动的车辆接近 1km x 20 m 区域 - 因为那是只是一个小区域 - 我们可以认为它足够公平吗?
  • 3.是的,对于这种情况,我们可以假设地球真的是平的,它靠在四只巨大的大象的背上,而这些大象又站在一只巨大的乌龟背上 =)
猜你喜欢
  • 2016-07-22
  • 2015-10-25
  • 2018-02-08
  • 1970-01-01
  • 2021-05-28
  • 1970-01-01
  • 2013-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多