博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
像素级别的多边形碰撞
阅读量:5877 次
发布时间:2019-06-19

本文共 1981 字,大约阅读时间需要 6 分钟。

hot3.png

boolean isCollisionPolygon(int[] xPoints, int[] yPoints, int posx, int posy) {    int i, j;    int y;    int miny, maxy;    int x1, y1;    int x2, y2;    int ind1, ind2;    int ints;    int[] polyInts;    int nPoints = xPoints.length;    if (nPoints < 3) {      return false;    }    polyInts = new int[nPoints];    miny = yPoints[0];    maxy = yPoints[0];    for (i = 1; i < nPoints; i++) {      if (yPoints[i] < miny) {        miny = yPoints[i];      }      else if (yPoints[i] > maxy) {        maxy = yPoints[i];      }    }    for (y = miny; y <= maxy; y++) {      ints = 0;      for (i = 0; i < nPoints; i++) {        if (i == 0) {          ind1 = nPoints - 1;          ind2 = 0;        }        else {          ind1 = i - 1;          ind2 = i;        }        y1 = yPoints[ind1];        y2 = yPoints[ind2];        if (y1 < y2) {          x1 = xPoints[ind1];          x2 = xPoints[ind2];        }        else if (y1 > y2) {          y2 = yPoints[ind1];          y1 = yPoints[ind2];          x2 = xPoints[ind1];          x1 = xPoints[ind2];        }        else {          continue;        }        if ( (y >= y1) && (y < y2)) {          polyInts[ints++] = (y - y1) * (x2 - x1) / (y2 - y1) + x1;        }        else if ( (y == maxy) && (y > y1) && (y <= y2)) {          polyInts[ints++] = (y - y1) * (x2 - x1) / (y2 - y1) + x1;        }      }      for (i = polyInts.length; --i >= 0; ) {        for (j = 0; j < i; j++) {          if (polyInts[j] > polyInts[j + 1]) {            int T = polyInts[j];            polyInts[j] = polyInts[j + 1];            polyInts[j + 1] = T;          }        }      }      for (i = 0; i < ints; i += 2) {        if (posy == y) {          if (posx >= polyInts[i] && posx <= polyInts[i + 1]) {            return true;          }        }      }    }    return false;  }

boolean isCollisionPolygon(int[] xPoints, int[] yPoints, int posx, int posy)使用方法.xPoints,是多边形的X坐标,yPoints是Y坐标posx,posy是那个要检测点的坐标

转载于:https://my.oschina.net/u/184773/blog/70466

你可能感兴趣的文章
.Net 通过MySQLDriverCS操作MySQL
查看>>
JS Cookie
查看>>
ubuntu Unable to locate package sysv-rc-conf
查看>>
笔记:认识.NET平台
查看>>
cocos2d中CCAnimation的使用(cocos2d 1.0以上版本)
查看>>
【吉光片羽】短信验证
查看>>
MacBook如何用Parallels Desktop安装windows7/8
查看>>
gitlab 完整部署实例
查看>>
GNS关于IPS&ASA&PIX&Junos的配置
查看>>
七天学会ASP.NET MVC (四)——用户授权认证问题
查看>>
upgrade to iOS7,how to remove stroyboard?
查看>>
影响企业信息化成败的几点因素
查看>>
SCCM 2016 配置管理系列(Part8)
查看>>
zabbix监控部署
查看>>
struts中的xwork源码下载地址
查看>>
Android硬件抽象层(HAL)深入剖析(二)
查看>>
CDays–4 习题一至四及相关内容解析。
查看>>
L3.十一.匿名函数和map方法
查看>>
java面向对象高级分层实例_实体类
查看>>
android aapt 用法 -- ApkReader
查看>>