atr-components 0.2.228 → 0.2.229
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -210,6 +210,57 @@ class ToolsUtil {
|
|
|
210
210
|
static httpSucces(res) {
|
|
211
211
|
return ['200', '201'].some(v => res.status == v);
|
|
212
212
|
}
|
|
213
|
+
/**
|
|
214
|
+
*判断点是否在坐标区域内
|
|
215
|
+
* @param p 判定的点
|
|
216
|
+
* @param pointsArr
|
|
217
|
+
*/
|
|
218
|
+
static judgeInRec(p, pointsArr) {
|
|
219
|
+
let px = p.x1, py = p.y1, flag = false, //穿越边框
|
|
220
|
+
inRect = false; //是否在多边形的边或者端点上
|
|
221
|
+
let start = pointsArr[0];
|
|
222
|
+
let end = pointsArr[pointsArr.length - 1];
|
|
223
|
+
//如果数组首尾没有相连,手动添加
|
|
224
|
+
pointsArr = start.x1 != end.x1 || start.y1 != start.y1 ? pointsArr.concat(start) : pointsArr;
|
|
225
|
+
//射线选取Y坐标不变,x正方向
|
|
226
|
+
pointsArr.forEach((item, index) => {
|
|
227
|
+
if (index == pointsArr.length - 1
|
|
228
|
+
|| inRect //在多边形的边或者端点上视为在区域内
|
|
229
|
+
) {
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
let endPoint = pointsArr[index + 1];
|
|
233
|
+
const startX = item.x1, startY = item.y1, endX = endPoint.x1, endY = endPoint.y1;
|
|
234
|
+
//判断点是否在端点上
|
|
235
|
+
if ((px == startX && py == startY)
|
|
236
|
+
|| (px == endX && px == endY)) {
|
|
237
|
+
inRect = true;
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
//判断射线重合并且点在边上
|
|
241
|
+
if ((startY == endY)
|
|
242
|
+
&& ((px > endX && px < startX
|
|
243
|
+
|| (px < endX && px > startX)))) {
|
|
244
|
+
inRect = true;
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
if ((startY < py && endY >= py)
|
|
248
|
+
|| (startY >= py && endY < py)) {
|
|
249
|
+
//求射线与线段交点的x坐标,y坐标还是py
|
|
250
|
+
let x = startX + (py - startY) * (endX - startX) / (endY - startY);
|
|
251
|
+
//点在边上
|
|
252
|
+
if (x == px) {
|
|
253
|
+
inRect = true;
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
//x大于px来保证射线朝右
|
|
257
|
+
if (x > px) {
|
|
258
|
+
flag = !flag;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
return inRect || flag;
|
|
263
|
+
}
|
|
213
264
|
static diffInput(chng, action) {
|
|
214
265
|
if (chng === undefined)
|
|
215
266
|
return;
|