From cf695c6db30c07e2ea9783f31660936787f67eb9 Mon Sep 17 00:00:00 2001
From: aijinhui <aijinhui>
Date: 星期六, 21 十月 2023 14:06:56 +0800
Subject: [PATCH] 推送入栏
---
ard-work/src/main/java/com/ruoyi/sy/mapper/ArdOilWallMapper.java | 4
ard-work/src/main/java/com/ruoyi/utils/gps/GeoTools.java | 69 +++++++++++++++++
ard-work/src/main/java/com/ruoyi/sy/mapper/ArdAccessFenceMapper.java | 7 +
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java | 17 ++++
ard-work/src/main/java/com/ruoyi/sy/domain/ArdOilWall.java | 2
ard-work/src/main/java/com/ruoyi/sy/param/OilWallParam.java | 2
ard-work/src/main/java/com/ruoyi/sy/service/ArdOilWallService.java | 7 +
ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java | 38 ++++++++-
ard-work/src/main/java/com/ruoyi/sy/service/ArdSyCarLockService.java | 2
ard-work/src/main/java/com/ruoyi/sy/domain/ArdAccessFence.java | 18 ++++
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdOilWallServiceImpl.java | 15 ++-
ard-work/src/main/java/com/ruoyi/sy/controller/OilWallController.java | 41 +++++++++-
ard-work/src/main/java/com/ruoyi/sy/service/IArdSyCarService.java | 4 +
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java | 9 ++
14 files changed, 213 insertions(+), 22 deletions(-)
diff --git a/ard-work/src/main/java/com/ruoyi/oil/controller/OilWallController.java b/ard-work/src/main/java/com/ruoyi/sy/controller/OilWallController.java
similarity index 60%
rename from ard-work/src/main/java/com/ruoyi/oil/controller/OilWallController.java
rename to ard-work/src/main/java/com/ruoyi/sy/controller/OilWallController.java
index 76aa0ea..f69b2e9 100644
--- a/ard-work/src/main/java/com/ruoyi/oil/controller/OilWallController.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/controller/OilWallController.java
@@ -1,10 +1,15 @@
-package com.ruoyi.oil.controller;
+package com.ruoyi.sy.controller;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.uuid.UUID;
-import com.ruoyi.oil.domain.ArdOilWall;
-import com.ruoyi.oil.param.OilWallParam;
-import com.ruoyi.oil.service.ArdOilWallService;
+import com.ruoyi.sy.domain.ArdOilWall;
+import com.ruoyi.sy.param.OilWallParam;
+import com.ruoyi.sy.service.ArdOilWallService;
+import com.ruoyi.sy.domain.ArdSyCar;
+import com.ruoyi.sy.domain.ArdSyUser;
+import com.ruoyi.sy.service.IArdSyCarService;
+import com.ruoyi.sy.service.IArdSyUserService;
+import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.utils.result.Results;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -12,6 +17,7 @@
import org.springframework.web.bind.annotation.*;
import java.util.Date;
+import java.util.List;
/**
* @author Administrator
@@ -23,6 +29,15 @@
@Autowired
private ArdOilWallService ardOilWallService;
+
+ @Autowired
+ private IArdSyCarService carService;
+
+ @Autowired
+ private IArdSyUserService iArdSyUserService;
+
+ @Autowired
+ private ISysConfigService sysConfigService;
@PostMapping("/add")
@ApiOperation("娣诲姞鐢靛瓙鍥存爮")
@@ -59,4 +74,22 @@
return Results.succeed(ardOilWallService.query(oilWallParam));
}
+ @GetMapping("/wallCar")
+ @ApiOperation("鎵�鏈夎繘鍏ュ洿鏍忕殑杞﹁締")
+ public Results wallCar(){
+ //鏌ヨ鎵�鏈夊凡鎸傝浇鐨勮溅杈�
+ List<ArdSyCar> carList = carService.all();
+ //鑾峰彇杞﹁締浣嶇疆
+ String usersId = SecurityUtils.getUserId();
+ ArdSyUser ardSyUser = iArdSyUserService.userById(usersId);
+ String syURL = sysConfigService.getSYURL();
+ for (int i = 0; i < carList.size(); i++) {
+ String carId = carList.get(i).getCarId();
+ carService.getCarGPSBycarId(usersId,carId,syURL,ardSyUser);
+ }
+
+ return Results.succeed();
+ }
+
+
}
diff --git a/ard-work/src/main/java/com/ruoyi/sy/domain/ArdAccessFence.java b/ard-work/src/main/java/com/ruoyi/sy/domain/ArdAccessFence.java
new file mode 100644
index 0000000..7d86125
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/sy/domain/ArdAccessFence.java
@@ -0,0 +1,18 @@
+package com.ruoyi.sy.domain;
+
+import lombok.Data;
+
+/**
+ * @author Administrator
+ */
+@Data
+public class ArdAccessFence {
+ private String id;
+ private String carId;
+ private String carName;
+ private String deptId;
+ private String deptName;
+ private String lng;
+ private String lat;
+ private String time;
+}
diff --git a/ard-work/src/main/java/com/ruoyi/oil/domain/ArdOilWall.java b/ard-work/src/main/java/com/ruoyi/sy/domain/ArdOilWall.java
similarity index 96%
rename from ard-work/src/main/java/com/ruoyi/oil/domain/ArdOilWall.java
rename to ard-work/src/main/java/com/ruoyi/sy/domain/ArdOilWall.java
index fb23a1a..4a0d146 100644
--- a/ard-work/src/main/java/com/ruoyi/oil/domain/ArdOilWall.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/domain/ArdOilWall.java
@@ -1,4 +1,4 @@
-package com.ruoyi.oil.domain;
+package com.ruoyi.sy.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
diff --git a/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java b/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java
index 9be6f79..cf6e07b 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java
@@ -13,15 +13,16 @@
import com.gps31.push.netty.client.TcpClient;
import com.gps31.push.util.MapUtil;
import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.sy.domain.ArdOilWall;
+import com.ruoyi.sy.service.impl.ArdOilWallServiceImpl;
import com.ruoyi.sy.service.impl.ArdSyCarDayServiceImpl;
import com.ruoyi.sy.service.impl.ArdSyCarServiceImpl;
+import com.ruoyi.utils.gps.GeoTools;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
+import java.awt.geom.Point2D;
+import java.util.*;
/**
* <p>Description: </p>
@@ -72,12 +73,37 @@
Map<String,Object> gpsMap = pushMsg.getJsonMap();
/*String carName = MapUtil.getStrVal(gpsMap, "carName","");//鑾峰彇杞︾墝鍙�
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- System.out.println(sdf.format(new Date()));
- log.error(String.format(" ---->鏀跺埌瀹氫綅鏁版嵁:%s",JSON.toJSONString(gpsMap)));*/
+ System.out.println(sdf.format(new Date()));*/
+// log.error(String.format(" ---->鏀跺埌瀹氫綅鏁版嵁:%s",JSON.toJSONString(gpsMap)));
String carId = (String)gpsMap.get("carId");
((ArdSyCarDayServiceImpl)SpringUtils.getBean("ardSyCarDayServiceImpl")).insertArdSyCarDay(carId);//鏂板杞﹁締涓婃姤鏃堕棿
Map<String,Object> result = ((ArdSyCarServiceImpl)SpringUtils.getBean("ardSyCarServiceImpl")).getArdSyCarAndDeptByCarId(carId);//鏌ヨ杞﹁締鍙婇儴闂�
+// log.error("---------------------"+result);
if(result != null){
+ //娓呮筏瀹氫綅
+ String lng = (String) gpsMap.get("lng");//鑾峰彇缁忓害
+ String lat = (String) gpsMap.get("lat");//鑾峰彇绾害
+ String carName = (String) gpsMap.get("carName");//鑾峰彇杞︾墝鍙�
+ String time = (String) gpsMap.get("result");//瀹氫綅鏃堕棿
+ String deptNum = (String) result.get("deptId");//鑾峰彇閮ㄩ棬ID
+ String deptName = (String) result.get("deptName");//鑾峰彇閮ㄩ棬鍚嶇О
+ //瀹氫箟2缁寸┖闂�
+ Point2D.Double point = new Point2D.Double(Double.parseDouble(lng), Double.parseDouble(lat));
+ List<Point2D.Double> pts = new ArrayList<Point2D.Double>();
+ //鍖归厤鍏ㄩ儴鍥存爮
+ List<ArdOilWall> ardOilWalls = ((ArdOilWallServiceImpl)SpringUtils.getBean("ArdOilWallServiceImpl")).all();
+ for (int i = 0; i < ardOilWalls.size(); i++) {
+ pts.clear();
+ ArdOilWall ardOilWall = ardOilWalls.get(i);
+ String[] coord = ardOilWall.getCoord().split(",");
+ for (int j = 0; j < coord.length; j = j + 3) {
+ pts.add(new Point2D.Double(Double.parseDouble(coord[j]), Double.parseDouble(coord[j+1])));
+ }
+ if(GeoTools.IsPtInPoly(point, pts)){
+ //杩涘叆浜嗗洿鏍忓叆搴�
+
+ }
+ }
gpsMap.putAll(result);
String ancestors = (String) gpsMap.get("ancestors");//鑾峰彇鐖剁骇閮ㄩ棬
String[] ancestorsArray = ancestors.split(",");
diff --git a/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdAccessFenceMapper.java b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdAccessFenceMapper.java
new file mode 100644
index 0000000..3c8ddb4
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdAccessFenceMapper.java
@@ -0,0 +1,7 @@
+package com.ruoyi.sy.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.sy.domain.ArdAccessFence;
+
+public interface ArdAccessFenceMapper extends BaseMapper<ArdAccessFence> {
+}
diff --git a/ard-work/src/main/java/com/ruoyi/oil/mapper/ArdOilWallMapper.java b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdOilWallMapper.java
similarity index 69%
rename from ard-work/src/main/java/com/ruoyi/oil/mapper/ArdOilWallMapper.java
rename to ard-work/src/main/java/com/ruoyi/sy/mapper/ArdOilWallMapper.java
index 61c8f58..dac48f3 100644
--- a/ard-work/src/main/java/com/ruoyi/oil/mapper/ArdOilWallMapper.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdOilWallMapper.java
@@ -1,7 +1,7 @@
-package com.ruoyi.oil.mapper;
+package com.ruoyi.sy.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.ruoyi.oil.domain.ArdOilWall;
+import com.ruoyi.sy.domain.ArdOilWall;
/**
* @author Administrator
diff --git a/ard-work/src/main/java/com/ruoyi/oil/param/OilWallParam.java b/ard-work/src/main/java/com/ruoyi/sy/param/OilWallParam.java
similarity index 78%
rename from ard-work/src/main/java/com/ruoyi/oil/param/OilWallParam.java
rename to ard-work/src/main/java/com/ruoyi/sy/param/OilWallParam.java
index f88923a..0a0207c 100644
--- a/ard-work/src/main/java/com/ruoyi/oil/param/OilWallParam.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/param/OilWallParam.java
@@ -1,4 +1,4 @@
-package com.ruoyi.oil.param;
+package com.ruoyi.sy.param;
import lombok.Data;
diff --git a/ard-work/src/main/java/com/ruoyi/oil/service/ArdOilWallService.java b/ard-work/src/main/java/com/ruoyi/sy/service/ArdOilWallService.java
similarity index 68%
rename from ard-work/src/main/java/com/ruoyi/oil/service/ArdOilWallService.java
rename to ard-work/src/main/java/com/ruoyi/sy/service/ArdOilWallService.java
index 4b447a8..a68c36d 100644
--- a/ard-work/src/main/java/com/ruoyi/oil/service/ArdOilWallService.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/ArdOilWallService.java
@@ -1,8 +1,8 @@
-package com.ruoyi.oil.service;
+package com.ruoyi.sy.service;
-import com.ruoyi.oil.domain.ArdOilWall;
-import com.ruoyi.oil.param.OilWallParam;
+import com.ruoyi.sy.domain.ArdOilWall;
+import com.ruoyi.sy.param.OilWallParam;
import java.util.List;
@@ -15,4 +15,5 @@
int updOilWall(ArdOilWall ardOilWall);
ArdOilWall one(String id);
List<ArdOilWall> query(OilWallParam oilWallParam);
+ List<ArdOilWall> all();
}
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/ArdSyCarLockService.java b/ard-work/src/main/java/com/ruoyi/sy/service/ArdSyCarLockService.java
index 1bb5e26..ee2e272 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/service/ArdSyCarLockService.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/ArdSyCarLockService.java
@@ -1,5 +1,6 @@
package com.ruoyi.sy.service;
+import com.ruoyi.sy.domain.ArdAccessFence;
import com.ruoyi.sy.domain.ArdSyCarLock;
import com.ruoyi.sy.domain.ArdSyCarRtu;
import com.ruoyi.sy.vo.CarLockVo;
@@ -33,4 +34,5 @@
RtuVo updRtu(String carId);
int updRtuCar(ArdSyCarRtu ardSyCarRtu);
+ int access(ArdAccessFence ardAccessFence);
}
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/IArdSyCarService.java b/ard-work/src/main/java/com/ruoyi/sy/service/IArdSyCarService.java
index e2d1987..3e2c167 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/service/IArdSyCarService.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/IArdSyCarService.java
@@ -4,6 +4,7 @@
import java.util.Map;
import com.ruoyi.scheduling.domian.SchedulingParam;
+import com.ruoyi.sy.domain.ArdAccessFence;
import com.ruoyi.sy.domain.ArdSyCar;
import com.ruoyi.sy.domain.ArdSyUser;
import com.ruoyi.utils.result.Results;
@@ -143,4 +144,7 @@
* 鑾峰彇闄勮繎鑼冨洿鍐呯殑杞﹁締淇℃伅(澶氳竟褰�)
* */
List<Map<String, Object>> getNearCarWithPolygon(SchedulingParam param);
+
+ List<ArdSyCar> all();
+
}
diff --git a/ard-work/src/main/java/com/ruoyi/oil/service/impl/ArdOilWallServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdOilWallServiceImpl.java
similarity index 79%
rename from ard-work/src/main/java/com/ruoyi/oil/service/impl/ArdOilWallServiceImpl.java
rename to ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdOilWallServiceImpl.java
index feef9fd..64e0b07 100644
--- a/ard-work/src/main/java/com/ruoyi/oil/service/impl/ArdOilWallServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdOilWallServiceImpl.java
@@ -1,10 +1,10 @@
-package com.ruoyi.oil.service.impl;
+package com.ruoyi.sy.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.ruoyi.oil.domain.ArdOilWall;
-import com.ruoyi.oil.mapper.ArdOilWallMapper;
-import com.ruoyi.oil.service.ArdOilWallService;
-import com.ruoyi.oil.param.OilWallParam;
+import com.ruoyi.sy.domain.ArdOilWall;
+import com.ruoyi.sy.mapper.ArdOilWallMapper;
+import com.ruoyi.sy.service.ArdOilWallService;
+import com.ruoyi.sy.param.OilWallParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -46,4 +46,9 @@
.eq(oilWallParam.getType()!=null,"type",oilWallParam.getType());
return ardOilWallMapper.selectList(queryWrapper);
}
+
+ @Override
+ public List<ArdOilWall> all() {
+ return ardOilWallMapper.selectList(null);
+ }
}
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java
index 9af588b..7c1c0b2 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java
@@ -2,9 +2,11 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.sy.domain.ArdAccessFence;
import com.ruoyi.sy.domain.ArdSyCar;
import com.ruoyi.sy.domain.ArdSyCarLock;
import com.ruoyi.sy.domain.ArdSyCarRtu;
+import com.ruoyi.sy.mapper.ArdAccessFenceMapper;
import com.ruoyi.sy.mapper.ArdSyCarLockMapper;
import com.ruoyi.sy.mapper.ArdSyCarMapper;
import com.ruoyi.sy.mapper.ArdSyCarRtuMapper;
@@ -34,6 +36,8 @@
private ArdSyCarRtuMapper rtuMapper;
@Autowired
private ArdSyCarLockMapper lockMapper;
+ @Autowired
+ private ArdAccessFenceMapper ardAccessFenceMapper;
@Override
public List<CarVo> car() {
@@ -160,6 +164,19 @@
return ardSyCarMapper.updateById(ardSyCar);
}
+ @Override
+ public int access(ArdAccessFence ardAccessFence) {
+ int num = 0;
+ String carId = ardAccessFence.getCarId();
+ QueryWrapper<ArdAccessFence> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("car_id",carId);
+ ArdAccessFence ardAccessFence1 = ardAccessFenceMapper.selectOne(queryWrapper);
+ if(ardAccessFence1==null){
+ num = ardAccessFenceMapper.insert(ardAccessFence);
+ }
+ return num;
+ }
+
public List<CarVo> carAnalysis(List<ArdSyCar> ardSyCars){
List<CarVo> list = new ArrayList<>();
for (int i = 0; i < ardSyCars.size(); i++) {
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java
index cc5c32b..479655e 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java
@@ -17,6 +17,7 @@
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.sy.domain.ArdAccessFence;
import com.ruoyi.utils.gis.GisUtil;
import com.ruoyi.utils.gis.Point;
import com.ruoyi.scheduling.domian.SchedulingParam;
@@ -1163,4 +1164,12 @@
}
return filteredList;
}
+
+ @Override
+ public List<ArdSyCar> all() {
+ QueryWrapper<ArdSyCar> queryWrapper = new QueryWrapper<>();
+ queryWrapper.ne("reserved_1","");
+ return ardSyCarMapper.selectList(queryWrapper);
+ }
+
}
diff --git a/ard-work/src/main/java/com/ruoyi/utils/gps/GeoTools.java b/ard-work/src/main/java/com/ruoyi/utils/gps/GeoTools.java
new file mode 100644
index 0000000..e9470aa
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/utils/gps/GeoTools.java
@@ -0,0 +1,69 @@
+package com.ruoyi.utils.gps;
+
+import java.awt.geom.Point2D;
+import java.util.List;
+
+public class GeoTools {
+ public static boolean IsPtInPoly(Point2D.Double point, List<Point2D.Double> pts){
+ int N = pts.size();
+ boolean boundOrVertex = true; //濡傛灉鐐逛綅浜庡杈瑰舰鐨勯《鐐规垨杈逛笂锛屼篃绠楀仛鐐瑰湪澶氳竟褰㈠唴锛岀洿鎺ヨ繑鍥瀟rue
+ int intersectCount = 0;//cross points count of x
+ double precision = 2e-10; //娴偣绫诲瀷璁$畻鏃跺�欎笌0姣旇緝鏃跺�欑殑瀹瑰樊
+ Point2D.Double p1, p2;//neighbour bound vertices
+ Point2D.Double p = point; //褰撳墠鐐�
+
+ p1 = pts.get(0);//left vertex
+ for(int i = 1; i <= N; ++i){//check all rays
+ if(p.equals(p1)){
+ return boundOrVertex;//p is an vertex
+ }
+
+ p2 = pts.get(i % N);//right vertex
+ if(p.x < Math.min(p1.x, p2.x) || p.x > Math.max(p1.x, p2.x)){//ray is outside of our interests
+ p1 = p2;
+ continue;//next ray left point
+ }
+
+ if(p.x > Math.min(p1.x, p2.x) && p.x < Math.max(p1.x, p2.x)){//ray is crossing over by the algorithm (common part of)
+ if(p.y <= Math.max(p1.y, p2.y)){//x is before of ray
+ if(p1.x == p2.x && p.y >= Math.min(p1.y, p2.y)){//overlies on a horizontal ray
+ return boundOrVertex;
+ }
+
+ if(p1.y == p2.y){//ray is vertical
+ if(p1.y == p.y){//overlies on a vertical ray
+ return boundOrVertex;
+ }else{//before ray
+ ++intersectCount;
+ }
+ }else{//cross point on the left side
+ double xinters = (p.x - p1.x) * (p2.y - p1.y) / (p2.x - p1.x) + p1.y;//cross point of y
+ if(Math.abs(p.y - xinters) < precision){//overlies on a ray
+ return boundOrVertex;
+ }
+
+ if(p.y < xinters){//before ray
+ ++intersectCount;
+ }
+ }
+ }
+ }else{//special case when ray is crossing through the vertex
+ if(p.x == p2.x && p.y <= p2.y){//p crossing over p2
+ Point2D.Double p3 = pts.get((i+1) % N); //next vertex
+ if(p.x >= Math.min(p1.x, p3.x) && p.x <= Math.max(p1.x, p3.x)){//p.x lies between p1.x & p3.x
+ ++intersectCount;
+ }else{
+ intersectCount += 2;
+ }
+ }
+ }
+ p1 = p2;//next ray left point
+ }
+
+ if(intersectCount % 2 == 0){//鍋舵暟鍦ㄥ杈瑰舰澶�
+ return false;
+ } else { //濂囨暟鍦ㄥ杈瑰舰鍐�
+ return true;
+ }
+ }
+}
--
Gitblit v1.9.3