Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Override
- public double countShape(ArrayList<double[]> points) {
- ArrayList<Point> pointsAL = new ArrayList<Point>();
- ArrayList<Point> sortedAL = new ArrayList<Point>();
- for (double[] p : points) {
- Point temp = new Point(p[0], p[1], p[2]);
- pointsAL.add(temp);
- }
- sortedAL = sortPoints(pointsAL);
- return 0;
- }
- public ArrayList<Point> sortPoints(ArrayList<Point> points) {
- Collections.sort(points,new Comparator<Point>() {
- @Override
- public int compare(Point p1, Point p2) {
- double alfaP1 = 0;
- double alfaP2 = 0;
- if (p1 == p2 || p1.equals(p2)) {
- return 0;
- }
- alfaP1 = countAlfa(p1);
- alfaP2 = countAlfa(p2);
- if(alfaP1 < alfaP2){
- return -1;
- }else if(alfaP1 > alfaP2){
- return 1;
- } else{
- if(p1.getX() < p2.getX()){
- return -1;
- }
- return 1;
- }
- }
- });
- return points;
- }
- public double countAlfa(Point p){
- double alfa = 0;
- double d = Math.abs(p.getX()) + Math.abs(p.getZ());
- if( p.getX() >= 0 && p.getZ() >= 0){
- alfa = p.getZ() / d;
- }else if( p.getX() < 0 && p.getZ() >= 0){
- alfa = 2 - ( p.getZ() / d);
- }else if( p.getX() < 0 && p.getZ() < 0 ){
- alfa = 2 + ( Math.abs(p.getZ()) / d );
- }else if( p.getX() >= 0 && p.getZ() < 0) {
- alfa = 4 - ( Math.abs(p.getZ()) / d);
- }
- return alfa;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement