android 线段与矩形碰撞检测
16lz
2021-01-26
/** * 线段与矩形碰撞检测* * @param x1 线段一端点x坐标* @param y1 线段一端点y坐标* @param x2 线段二端点x坐标* @param y2 线段二端点y坐标* @param x 矩形左上角x坐标* @param y 矩形左上角y坐标* @param width 矩形宽度* @param height 矩形高度* @return */1.2.public static boolean lineWidthRect(int x1, int y1, int x2, int y2, int x, int y, int width, int height) {3.double a =(double) ((y1 - y2)) / (double) ((x1 - x2));4.double b =y1 - a * x1;5.if (x1 < x2) {6.for (int i =x1; i <= x2; i++) {7.int tempY =(int) (a * i + b);8.if (intersectRect(i, tempY, 1, 1, x, y, width, height)) {9.return true;10.}11.}12.} else if (x1 > x2) {13.for (int i =x1; i >= x2; i--) {14.int tempY =(int) (a * i + b);15.if (intersectRect(i, tempY, 1, 1, x, y, width, height)) {16.return true;17.}18.}19.} else {20.if (y1 <= y2) {21.for (int i =y1; i < y2; i++) {22.if (intersectRect(x1, i, 1, 1, x, y, width, height)) {23.return true;24.}25.}26.} else {27.for (int i =y2; i > y2; i--) {28.if (intersectRect(x1, i, 1, 1, x, y, width, height)) {29.return true;30.}31.}32.}33.}34.return false;35.}
更多相关文章
- android图片的打开和缩放时出现oom处理过程
- android中clip的使用
- android桌面悬浮窗显示录屏时间控制效果
- 地图API使用文档-以腾讯地图为例
- android:自定义监听(简单)
- Android(安卓)三种动画详解及简单实例
- Android各种事件处理一览(单击事件、触摸事件、物理按键事件、长
- Android(安卓)UI 之 获取组件或者元素的坐标
- 自定义圆形进度条