判断一个点是否在矩形内部
2018-01-25 10:57
148 查看
【题目】
在二维坐标系中,所有的值都是double类型,那么一个矩形可以由4个点来表示,(x1,y1)为最左的点,(x2,y2)为最上的点,(x3,y3)为最下的点,(x4,y4)为最右的点。
给定四个点代表的矩形,再给定一个点(x,y),判断该点是否在矩形中。
【代码】
在二维坐标系中,所有的值都是double类型,那么一个矩形可以由4个点来表示,(x1,y1)为最左的点,(x2,y2)为最上的点,(x3,y3)为最下的点,(x4,y4)为最右的点。
给定四个点代表的矩形,再给定一个点(x,y),判断该点是否在矩形中。
【代码】
//判断一个点是否在矩形内部 public static boolean isInside(double x1,double y1,double x4,double y4,double x,double y){ //默认:1点在左上,4点在右下 if(x<=x1){//在矩形左侧 return false; } if(x>=x4){//在矩形右侧 return false; } if(y>=y1){//在矩形上侧 return false; } if(y<=y4){//在矩形下侧 return false; } return true; } public static boolean isInside(double x1,double y1,double x4,double y4, double x2,double y2,double x3,double y3,double x,double y){ //矩形边平行于x轴或y轴 if(y1==y2){ return isInside(x1,y1,x4,y4,x,y); } //坐标变换,把矩形转成平行,所有点跟着动 double a=Math.abs(y4-y3); double b=Math.abs(x4-x3); double c=Math.sqrt(a*a+b*b); double sin=a/c; double cos=b/c; double x11=cos*x1+sin*y1; double y11=-x1*sin+y1*cos; double x44=cos*x4+sin*y4; double y44=-x4*sin+y4*cos; double xx=cos*x+sin*y; double yy=-x*sin+y*cos; //旋转完成,又变成上面一种平行的情况 return isInside(x11,y11,x44,y44,xx,yy); }
相关文章推荐
- 其他题目---判断一个点是否在矩形内部
- 判断一个点是否在多边形内部 - 射线法思路
- 点在多边形内算法——判断一个点是否在一个复杂多边形的内部
- 判断一个点是否在多边形内部,射线法思路,C#实现
- 判断一个点是否在多边形内部 - 射线法Scala实现
- 计算几何----判断空间点是否在一个四面体(tetrahedron)内部
- Android 百度地图 动态画多边形,并判断一个点是否在多边形内部
- 如何判断一个点是否在三角形内部
- 判断一个四边形是否是矩形——面试题
- 点在多边形内算法——判断一个点是否在一个复杂多边形的内部
- 判断一个点是否在多边形内部
- 点在多边形内算法——判断一个点是否在一个复杂多边形的内部
- 判断一个点是否在多边形内部
- GraphicsPath类—可以判断某一点是否在某一个graph的内部
- zoj 1608 Two Circles and a Rectangle 判断两个圆是否能放入一个矩形中
- 判断一个点是否在矩形内PtInRect
- 判断一个点是否在多边形内部 [1] 射线法思路
- 根据经纬度判断一个点是否在一个矩形范围内
- 如何判断一个点是否在一个多边形内部+三角形有向面积公式
- 判断点是否在一个三角形内部