Package org.geolab3d.geometry

Source Code of org.geolab3d.geometry.Kernel

package org.geolab3d.geometry;

//import org.geolab3d.geometry.Plane;
import org.geolab3d.geometry.Point;
import java.lang.Math;



public class Kernel {
 
  //costante: serve per confronti punti "same"
  public static final double tol=0.00001;
   
  //metodo che implementa la distanza tra due punti nelle tre coordinate
  public static double distance(Point p1, Point p2) {
   
      final double dinstance;     
    dinstance = Math.sqrt( Math.pow((p1.getX()-p2.getX()),2) + Math.pow((p1.getY()-p2.getY()),2) + Math.pow((p1.getZ()-p2.getZ()),2)  );   
    return dinstance;
  }
 
  //metodo che calcola le coordinate del punto medio
    public Point midPoint(Point p1, Point p2){
      final Point p_med;
      p_med=new Point(0.,0.,0.);//creo un nuovo obj di tipo point e lo inizializzo
  
      p_med.setX((p1.getX()+p2.getX())/2);
      p_med.setY((p1.getY()+p2.getY())/2);
      p_med.setZ((p1.getZ()+p2.getZ())/2);
     
      return p_med;
     
    }
 
  //equazione della retta passante per due punti in x, y, z: � un sistema di due eq. una in xy e l'altra in xz
  //ritorna a1x+b1y+c1=0 a sistema con a2x+b2z+c2=0  
  public void EqLine (Point p1, Point p2){
    final double a1;
    final double b1;
    final double c1;
    final double a2;
    final double b2;
    final double c2;
    //COEFFICIENTI DI a1X+b1Y+c1=0
    a1 = p2.getY() - p1.getY();
    b1 = p1.getX() - p2.getX();
    c1 = (p1.getY()*p2.getX())-(p1.getX()*p2.getY());
    //COEFFICIENTI DI a2X+b2Z+c2=0
    a2 = p2.getZ() - p1.getZ();
    b2 = p1.getX() - p2.getX();
    c2 = (p1.getZ()*p2.getX())-(p1.getX()*p2.getZ());   
  }
   
   
  //metodo che controlla se 3 punti sono allineati o meno: per tre punti passa un e un solo piano
  public boolean areCollinear (Point p0, Point p1, Point p2){
    final int rango;
    if (Rg(p1.getX()-p0.getX(), p1.getY()-p0.getY(), p1.getZ()-p0.getZ(), p2.getX()-p0.getX(), p2.getY()-p0.getY(), p2.getZ()-p0.getZ() )==1){
      return true; //se sono allineati 
    }else {
      return false;//non sono allineati: passa un e un solo piano
   
   
  }

 
  //metodo che calcola il rango della matrice dei coefficienti di 2 piani 3x2
  public int Rg (double a1, double b1, double c1, double a2, double b2, double c2){
    final int rango;
    if ( ((a1 * b2)-(b1 * a2)!=0) && ((a1 * c2)-(a2 * c1)!=0) && ( (a1*c2)- (c1*a2)!=0) ){
       rango = 2;      
    } else{rango = 1;}
   
    return rango;
  }
 

 
 
 
 
}
TOP

Related Classes of org.geolab3d.geometry.Kernel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.