Advertisement
Guest User

Untitled

a guest
Feb 28th, 2020
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.99 KB | None | 0 0
  1. package lab03;
  2.  
  3. import java.util.Arrays;
  4. import java.util.HashSet;
  5.  
  6. import javafx.geometry.Point2D;
  7.  
  8. public class ConvexHull {
  9.    
  10.     public static HashSet<Point2D> bruteForceConvexHull( Point2D[] listPoints ) {
  11.        
  12.         HashSet<Point2D> vertices = new HashSet<>();
  13.        
  14.         boolean foundProblem = false;
  15.         Point2D firstPoint;
  16.         Point2D secondPoint;
  17.         Point2D thirdPoint;
  18.         for (int i = 0 ; i< listPoints.length-2; ++i) {
  19.            
  20.             for (int j = i+1 ; j< listPoints.length-1; ++j ) {
  21.                
  22.                 double initialSign = 0.0;
  23.                
  24.                 firstPoint= listPoints[i];
  25.                 secondPoint = listPoints[j];
  26.                
  27.                 double a = secondPoint.getY() - firstPoint.getY();
  28.                 double b = firstPoint.getX() - secondPoint.getX();
  29.                 double c = firstPoint.getX()*secondPoint.getY() - firstPoint.getY() * secondPoint.getX();
  30.                
  31.                 foundProblem = false;
  32.                
  33.                 for (int k= 0; k< listPoints.length && (!listPoints[k].equals(firstPoint) || !listPoints[k].equals(secondPoint)); ++k) {
  34.                    
  35.                     thirdPoint = listPoints[k];
  36.                    
  37.                     double check = a*thirdPoint.getX() + b*thirdPoint.getY() - c;
  38.                    
  39.                    
  40.                     if( initialSign != 0.0  ) {
  41.                         if( ( check>0 && initialSign < 0 )  || (check <0 && initialSign >0)) {
  42.                             foundProblem = true;
  43.                             break;
  44.                         }
  45.                     }else {
  46.                         initialSign = (check > 0) ? 1:-1;
  47.                     }
  48.                 }
  49.                
  50.                 if (!foundProblem) {
  51.                     vertices.add(firstPoint);
  52.                     vertices.add(secondPoint);
  53.                 }
  54.                
  55.                        
  56.             }
  57.            
  58.         }
  59.        
  60.        
  61.         return vertices;
  62.        
  63.     }
  64.    
  65.     public static void main(String[] args) {
  66.        
  67.         System.out.println("Hi");
  68.         Point2D[] pointsTest = new Point2D[] {
  69.                 new Point2D(1.0, 1.0),
  70.                 new Point2D(1.0, 0.5),
  71.                 new Point2D(2.0, 1.0),
  72.                 new Point2D(5.0, 2.0),
  73.                 new Point2D(4.0, 2.0)
  74.         };
  75.        
  76.         System.out.println(Arrays.toString(pointsTest));
  77.        
  78.         HashSet<Point2D> vertices = bruteForceConvexHull(pointsTest);
  79.         for (Point2D point: vertices) {
  80.             System.out.println(point.toString());
  81.         }
  82.  
  83.     }
  84.  
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement