javascript多边形碰撞检测详解编程语言
JavaScript编程语言 详解 多边形 碰撞检测
2023-06-13 09:11:50 时间
const app = new PIXI.Application({ antialias: true }); document.body.appendChild(app.view); const graphics = new PIXI.Graphics();
// the reason for this is because of multitouch // we want to track the movement of this particular touch this.data = event.data; this.alpha = 0.5; this.dragging = true; function onDragEnd() { this.alpha = 1; this.dragging = false; // set the interaction data to null this.data = null; var posPolygon=[]; var dianlist={}; dianlist[x]=600; dianlist[y]=370; posPolygon.push(dianlist) var dianlist={}; dianlist[x]=700; dianlist[y]=460; posPolygon.push(dianlist) var dianlist={}; dianlist[x]=780; dianlist[y]=420; posPolygon.push(dianlist) var dianlist={}; dianlist[x]=730; dianlist[y]=570; posPolygon.push(dianlist) var dianlist={}; dianlist[x]=590; dianlist[y]=520; posPolygon.push(dianlist) function onDragMove() { if (this.dragging) { const newPosition = this.data.getLocalPosition(this.parent); this.x = newPosition.x; this.y = newPosition.y; var baoweihe=this.getBounds(); var youxiajiaox=baoweihe.x+baoweihe.width; var youxiajiaoy=baoweihe.y+baoweihe.height; var poslist=[]; var pos={}; pos[x]=baoweihe.x; pos[y]=baoweihe.y; poslist.push(pos); var pos={}; pos[x]=youxiajiaox; pos[y]=baoweihe.y; poslist.push(pos); var pos={}; pos[x]=youxiajiaox; pos[y]=youxiajiaoy; poslist.push(pos); var pos={}; pos[x]=baoweihe.x; pos[y]=youxiajiaoy; poslist.push(pos);
function PolygonInPolygon(posPolygonA, posPolygonB, count){ console.log(posPolygonA); var count1=posPolygonA.length; for(var i=0;i count1;i++ ){ var pos=posPolygonA[i]; console.log(pos); var ispengzhuang=PointInPolygon( pos, posPolygonB, count); if(ispengzhuang){ alert(碰撞了) function PointInPolygon( pos, posPolygonB, count) var cross = 0; //交点个数 for( var i = 0; i count; i++ ) var p1 = posPolygon[i]; var p2 = posPolygon[(i + 1) % count]; //下一个节点 // p1p2这条边与水平线平行 if( p1.y == p2.y ) continue; // 交点在p1p2的延长线上 if( pos.y Math.min( p1.y, p2.y ) ) continue; // 交点在p1p2的延长线上 if( pos.y Math.max( p1.y, p2.y ) ) continue; // 计算交点 X 左边 : (p2.y - p1.y)/(p2.x - p1.x) = (y - p1.y)/(x - p1.x) // 直线 K 值相等, 交点y = pos.y let x = (pos.y - p1.y) * (p2.x - p1.x) / (p2.y - p1.y) + p1.x // 只统计单边交点,即点的正向方向 if(x pos.x) cross ++; return cross % 2 == 1; }
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/18770.html
cgojava相关文章
- JavaScript去除数组中重复字符串详解编程语言
- 使用JavaScript写的一个旋转的彩圈详解编程语言
- JavaScript验证字符串只能包含数字或者英文字符的代码实例详解编程语言
- javascript随机抽签程序详解编程语言
- Javascript监测网络状况详解编程语言
- JavaScript 日期格式化详解编程语言
- JavaScript实现星级评分详解编程语言
- javascript 下雪效果 特效详解编程语言
- base64编码加密解密的JavaScript实现详解编程语言
- JavaScript判断输入的参数是否是国内合法的邮编地址详解编程语言
- JavaScript创建和使用命名空间详解编程语言
- javascript计算两个日期之间相差几个月份详解编程语言
- JavaScript获取某年某月的最后一天详解编程语言
- Nlp_compromise v10.0.0 发布, 在JavaScript中使用自然语言详解编程语言
- 《JavaScript DOM编程艺术》学习笔记(一)详解编程语言
- JavaScript条形码生成和扫码识别开源库详解编程语言
- javascript常见错误详解编程语言
- javascript和jQuery的类型判断详解编程语言
- javascript 生成blob url的方法详解编程语言
- javascript计算两点之间的夹角算法详解编程语言
- javascript json写法详解编程语言
- javascript for…in 和 for of区别详解编程语言