Check Intersection

This commit is contained in:
portree_kid
2020-03-07 21:35:41 +01:00
parent 9eb92fb13d
commit 2f86bed0bf
6 changed files with 86 additions and 6 deletions
+30 -3
View File
@@ -11,6 +11,7 @@ importScripts('../../../node_modules/dijkstrajs/dijkstra.js');
const homedir = require('os').homedir();
importScripts('logger.js');
importScripts('haversine.js');
function errorReceiver(event) {
throw event.data;
@@ -27,8 +28,8 @@ onmessage = function (event) {
// event.origin.webContents.send('scanFinished');
}
).catch(result => {
console.log('Crashed');
console.log(result);
console.error('Crashed');
console.error(result);
postMessage('DONE');
});
}
@@ -41,7 +42,8 @@ async function checkGroundnet(data) {
var parkings = data.map(mapParkings).filter(n => n !== undefined);
var runwayNodes = data.map(mapRunwayNodes).filter(n => n !== undefined);
var edges = data.map(mapEdges).filter(n => n !== undefined);
this.max = parkings.length * runwayNodes.length;
this.max = parkings.length * runwayNodes.length +
parkings.length;
this.postMessage(['max', this.max]);
var graph = {};
@@ -61,6 +63,7 @@ async function checkGroundnet(data) {
var node2 = graph[element.end];
node2[Number(element.start)] = 1;
});
// Check if there is a route from every parking to every runway node
var okNodes = [];
logger('info', graph);
parkings.forEach(parkingNode => {
@@ -86,6 +89,7 @@ async function checkGroundnet(data) {
if (runwayNodes.length === 0) {
notOkNodes.push({id:0, message:'No Runwaynodes'});
}
// Ends that are not on Runway and not a Parking
var danglingEnds = Object.entries(graph).filter(
(v,i) => Object.keys(v[1]).length <= 1
).filter(
@@ -94,6 +98,23 @@ async function checkGroundnet(data) {
v => {return {id:Number(v[0]), message:'Node not a legimate end'}}
);
notOkNodes = notOkNodes.concat(danglingEnds);
var parkingNodes = data.map(mapParkingNode).filter(n => n !== undefined);
// Check for intersecting radii
parkingNodes.forEach(parkingNode => {
parkingNodes.forEach( parkingNode1 => {
console.log(parkingNode, parkingNode1);
if(parkingNode.index !== parkingNode1.index) {
var d = distance([parkingNode.lng, parkingNode.lat],
[parkingNode1.lng, parkingNode1.lat]);
if (d < parkingNode.radius + parkingNode1.radius) {
notOkNodes.push({id: parkingNode.index, message:'Intersecting node'});
}
}
this.postMessage(['progress', 1]);
});
});
// check1(graph);
// check2();
@@ -146,6 +167,12 @@ var mapParkings = function (o) {
console.log(o);
}
var mapParkingNode = function (o) {
if(o.type === 'parking')
return {index: o.index, lat:o.lat, lng:o.lng, radius: Number(o.radius)};
console.log(o);
}
var mapRunwayNodes = function (o) {
if(o.type === 'runway')
return o.index;