在java中判断一个点是否在一个有斜度的矩形内的 Rectangle的用法
现在工作需要要写这样一个算法,如题;我看到java.awt.Rectangle提供了一个矩形对象可以判断一个点是否在这个矩形内,可是我看Rectangle的构造是确定左上...
现在工作需要要写这样一个算法,如题;我看到java.awt.Rectangle提供了一个矩形对象可以判断一个点是否在这个矩形内,可是我看Rectangle的构造是确定左上角的一个点的坐标和宽度和高度,我想这样只能确定一个平行于X轴和Y轴的矩形;那如果现在给出的矩形有斜度即每条边都不平行于X轴和Y轴,应该就不能用Rectangle来定义了吧;
我的问题就是现在有一个有斜度的矩形已知四个顶点的坐标,怎么判断一个点在不在这个矩形内呢,Rectangle还有没有可以解决这个问题的拓展用法;
请老鸟们指点一下,先谢过~ 展开
我的问题就是现在有一个有斜度的矩形已知四个顶点的坐标,怎么判断一个点在不在这个矩形内呢,Rectangle还有没有可以解决这个问题的拓展用法;
请老鸟们指点一下,先谢过~ 展开
3个回答
展开全部
只要实现这个的话,不考虑效率问题,可以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;
}
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值是否在矩形内
如图中的样子,根据斜率计算斜边上的某个点是可以计算的
展开全部
这个好像是个算法问题……
要先根据每相邻两点得出一个斜率公式,计算该点坐标是否分别在两条平行线之间
变换坐标的做法似乎更麻烦一点
要先根据每相邻两点得出一个斜率公式,计算该点坐标是否分别在两条平行线之间
变换坐标的做法似乎更麻烦一点
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Path2D用这个对象表示非正规的图形,moveTo lineTo可以表示一个这样的图形。他是shape接口的实现,可以直接使用contains(double x, double y)来判断点是不是在范围内。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询