Loading Comparison/src/main/java/cz/fidentis/analyst/visitors/face/HausdorffDistancePrioritized.java +21 −3 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import javax.vecmath.Point3d; /** Loading Loading @@ -86,12 +88,28 @@ public class HausdorffDistancePrioritized extends HumanFaceVisitor { @Override public void visitHumanFace(HumanFace humanFace) { final FeaturePoint featurePoint = humanFace.getFeaturePoints().get(featurePointType.getType()); final List<MeshFacet> facets = humanFace.getMeshModel().getFacets(); final ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); final PrioritySphere priorityVisitor = new PrioritySphere(featurePoint.getPosition(), 1 /*TODO TEMPORARY - sphere radius needs to be computed dynamically*/); for (final MeshFacet comparedFacet: humanFace.getMeshModel().getFacets()) { for (final MeshFacet comparedFacet: facets) { if (inParallel() && distanceVisitor.isThreadSafe()) { executor.execute(() -> comparedFacet.accept(distanceVisitor)); } else { comparedFacet.accept(distanceVisitor); } if (inParallel() && priorityVisitor.isThreadSafe()) { executor.execute(() -> comparedFacet.accept(priorityVisitor)); } else { comparedFacet.accept(priorityVisitor); } } if (inParallel()) { executor.shutdown(); while (!executor.isTerminated()){} } synchronized(this) { priorities.putAll(priorityVisitor.getPriorities()); Loading Loading
Comparison/src/main/java/cz/fidentis/analyst/visitors/face/HausdorffDistancePrioritized.java +21 −3 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import javax.vecmath.Point3d; /** Loading Loading @@ -86,12 +88,28 @@ public class HausdorffDistancePrioritized extends HumanFaceVisitor { @Override public void visitHumanFace(HumanFace humanFace) { final FeaturePoint featurePoint = humanFace.getFeaturePoints().get(featurePointType.getType()); final List<MeshFacet> facets = humanFace.getMeshModel().getFacets(); final ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); final PrioritySphere priorityVisitor = new PrioritySphere(featurePoint.getPosition(), 1 /*TODO TEMPORARY - sphere radius needs to be computed dynamically*/); for (final MeshFacet comparedFacet: humanFace.getMeshModel().getFacets()) { for (final MeshFacet comparedFacet: facets) { if (inParallel() && distanceVisitor.isThreadSafe()) { executor.execute(() -> comparedFacet.accept(distanceVisitor)); } else { comparedFacet.accept(distanceVisitor); } if (inParallel() && priorityVisitor.isThreadSafe()) { executor.execute(() -> comparedFacet.accept(priorityVisitor)); } else { comparedFacet.accept(priorityVisitor); } } if (inParallel()) { executor.shutdown(); while (!executor.isTerminated()){} } synchronized(this) { priorities.putAll(priorityVisitor.getPriorities()); Loading