java判断某个经纬度是不是在矩形内

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java判断某个经纬度是不是在矩形内相关的知识,希望对你有一定的参考价值。

参考技术A 用Rectangle类,具有一下方法

public boolean contains(double x,
double y)

测试指定坐标是否在 Shape 的边界内。

参数:
x - 要测试的指定的 X 坐标
y - 要测试的指定的 Y 坐标本回答被提问者和网友采纳

在java中判断一个点是不是在一个有斜度的矩形内的 Rectangle的用法

现在工作需要要写这样一个算法,如题;我看到java.awt.Rectangle提供了一个矩形对象可以判断一个点是否在这个矩形内,可是我看Rectangle的构造是确定左上角的一个点的坐标和宽度和高度,我想这样只能确定一个平行于X轴和Y轴的矩形;那如果现在给出的矩形有斜度即每条边都不平行于X轴和Y轴,应该就不能用Rectangle来定义了吧;
我的问题就是现在有一个有斜度的矩形已知四个顶点的坐标,怎么判断一个点在不在这个矩形内呢,Rectangle还有没有可以解决这个问题的拓展用法;
请老鸟们指点一下,先谢过~

只要实现这个的话,不考虑效率问题,可以new一个image,然后把这个不规则的四边fill上去,当然要指定个颜色,然后获取你要判断坐标的点。然后判断下颜色是不是和填充的一样
BufferedImage 有getRGB(int x, int y) 下面方法可以获取r、g、b的值
public static int [] getRGB(BufferedImage image, int x, int y)
int [] rgb = null ;
if (image != null && x < image.getWidth() && y < image.getHeight())
rgb = new int [ 3 ];
int pixel = image.getRGB(x,y);
rgb[ 0 ] = (pixel & 0xff0000 ) >> 16 ;
rgb[ 1 ] = (pixel & 0xff00 ) >> 8 ;
rgb[ 2 ] = (pixel & 0xff );

return rgb;
追问

服务器用的 必须考虑效率问题,而且不能按UI方式做

追答

终于看明白题目了,既然是矩形那么就有4条边,首先判断下点的高度是不是在矩形范围内
如果在矩形内,获取同一高度的矩形左右2点的坐标,然后判断x值是否在矩形内
如图中的样子,根据斜率计算斜边上的某个点是可以计算的

计算

终于看明白了,矩形的话应该能计算出斜率,根据这个计算和你要判断的点同样y值的两条边相对应的两个点的x值,然后判断这个点是否在2个值范围内

参考技术A 这个好像是个算法问题……
要先根据每相邻两点得出一个斜率公式,计算该点坐标是否分别在两条平行线之间
变换坐标的做法似乎更麻烦一点
参考技术B Path2D用这个对象表示非正规的图形,moveTo lineTo可以表示一个这样的图形。他是shape接口的实现,可以直接使用contains(double x, double y)来判断点是不是在范围内。

以上是关于java判断某个经纬度是不是在矩形内的主要内容,如果未能解决你的问题,请参考以下文章

获取登录用户15英里范围内经纬度的用户数

如何判断一个指定的经纬度点是不是落在一个多边形区域内

如何判断一个指定的经纬度点是不是落在一个多边形区域内

Java 计算经纬度是否在某个范围之内

如何判断经纬度是不是准确

JAVA代码根据经纬度范围计算WGS84与谷歌全球墨卡托包含的切片数目与拼接图像像素尺寸