public void computeVertices() { vertices.clear(); for (Connection connection : connections) { vertices.add(connection.getSourcePoint()); vertices.add(connection.getTargetPoint()); } }
public static void assertConnectionsEqual(Connection connectionExpected, Connection connectionActual, double epsilon) { assertConnectionPointsEqual(connectionExpected.getSourcePoint(), connectionActual.getSourcePoint(), epsilon); assertConnectionPointsEqual(connectionExpected.getTargetPoint(), connectionActual.getTargetPoint(), epsilon); }
boolean isConnectionValid(ConnectionPoint3D source, ConnectionPoint3D target); }
private void buildVisibilityMap(Collection<VisibilityMapHolder> visibilityMapHolders) { visibilityMap.clear(); nodeCosts.clear(); for (VisibilityMapHolder visibilityMapHolder : visibilityMapHolders) { VisibilityMap visibilityMap = visibilityMapHolder.getVisibilityMapInWorld(); for (Connection connection : visibilityMap) { ConnectionData connectionData = new ConnectionData(); connectionData.connection = connection; connectionData.edgeWeight = visibilityMapHolder.getConnectionWeight(connection); this.visibilityMap.computeIfAbsent(connection.getSourcePoint(), (p) -> new HashSet<>()).add(connectionData); this.visibilityMap.computeIfAbsent(connection.getTargetPoint(), (p) -> new HashSet<>()).add(connectionData); } } }
Point3DReadOnly edgeTarget = connection.getTargetPoint(); meshBuilder.addLine(edgeSource, edgeTarget, VisualizationParameters.VISBILITYMAP_LINE_THICKNESS);
previousTarget = connection.getTargetPoint(); connections.set(i + 1, new Connection(newPoint, next.getTargetPoint())); connections.forEach(connection -> path.add(connection.getTargetPoint()));
@Override public double getConnectionWeight(Connection connection) { ConnectionPoint3D sourcePoint = connection.getSourcePoint(); ConnectionPoint3D targetPoint = connection.getTargetPoint(); double horizontalDistance = EuclidGeometryTools.distanceBetweenPoint2Ds(sourcePoint.getX(), sourcePoint.getY(), targetPoint.getX(), targetPoint.getY()); double verticalDistance = Math.abs(sourcePoint.getZ() - targetPoint.getZ()); return INTER_REGION_WEIGHT_SCALE * (horizontalDistance + verticalDistance); }
if (connectionPoint3D.getTargetPoint().getRegionId() < t1.getTargetPoint().getRegionId()) return -1; else if (connectionPoint3D.getTargetPoint().getRegionId() > t1.getTargetPoint().getRegionId()) return 1; else if (connectionPoint3D.getTargetPoint().getX() < t1.getTargetPoint().getX()) return -1; else if (connectionPoint3D.getTargetPoint().getX() > t1.getTargetPoint().getX()) return 1; else if (connectionPoint3D.getTargetPoint().getY() < t1.getTargetPoint().getY()) return -1; else if (connectionPoint3D.getTargetPoint().getY() > t1.getTargetPoint().getY()) return 1; else else if (connectionPoint3D.getSourcePoint().getZ() > t1.getTargetPoint().getZ()) return 1; else if (connectionPoint3D.getTargetPoint().getZ() < t1.getTargetPoint().getZ()) return -1; else if (connectionPoint3D.getTargetPoint().getZ() > t1.getTargetPoint().getZ()) return 1; else
connections.add(new Connection(sourceConnectionPoint, closestConnection.getTargetPoint())); fallbackMap.addConnection(new Connection(newConnectionPoint, closestConnection.getTargetPoint()));
private void processMap(VisibilityMapHolder visibilityMapHolder) { JavaFXMeshBuilder meshBuilder = new JavaFXMeshBuilder(); for (Connection connection : visibilityMapHolder.getVisibilityMapInWorld()) meshBuilder.addLine(connection.getSourcePoint(), connection.getTargetPoint(), VisualizationParameters.INTER_REGION_CONNECTIVITY_LINE_THICKNESS); MeshView meshView = new MeshView(meshBuilder.generateMesh()); if (customMaterial != null) meshView.setMaterial(customMaterial); else meshView.setMaterial(new PhongMaterial(PlanarRegionViewer.getRegionColor(visibilityMapHolder.getMapId()))); mapToRender.set(meshView); }
public static void addConnectionToGraph(Connection connection, double connectionWeight, SimpleWeightedGraph<ConnectionPoint3D, DefaultWeightedEdge> graphToUpdate) { ConnectionPoint3D source = connection.getSourcePoint(); ConnectionPoint3D target = connection.getTargetPoint(); if (!source.epsilonEquals(target, 1.0e-3)) { graphToUpdate.addVertex(source); graphToUpdate.addVertex(target); DefaultWeightedEdge edge = new DefaultWeightedEdge(); graphToUpdate.addEdge(source, target, edge); graphToUpdate.setEdgeWeight(edge, connectionWeight); } }
connections.add(new Connection(sourceConnectionPoint, closestFallbackConnection.getTargetPoint())); fallbackMap.addConnection(new Connection(newConnectionPoint, closestFallbackConnection.getTargetPoint()));
public static VisibilityMapMessage convertToVisibilityMapMessage(int mapId, VisibilityMap visibilityMap) { VisibilityMapMessage message = new VisibilityMapMessage(); if (visibilityMap == null) return message; for (Connection connection : visibilityMap.getConnections()) { ConnectionPoint3D sourcePoint = connection.getSourcePoint(); ConnectionPoint3D targetPoint = connection.getTargetPoint(); message.getSourcePoints().add().set(sourcePoint); message.getTargetPoints().add().set(targetPoint); message.getSourceRegionIds().add(sourcePoint.getRegionId()); message.getTargetRegionIds().add(targetPoint.getRegionId()); } message.setMapId(mapId); return message; }