Package ds.moteur.route.personnalise

Source Code of ds.moteur.route.personnalise.RouteCourbe

package ds.moteur.route.personnalise;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import ds.moteur.geometrie.Angle3D;
import ds.moteur.geometrie.Point;
import ds.moteur.route.Route;
import ds.moteur.route.cc.CourbeConduite;
import ds.moteur.route.cc.PointEntree;
import ds.moteur.route.cc.PointSortie;

@SuppressWarnings("serial")
public class RouteCourbe extends Route implements Serializable{

  private final static double FINESSE = Math.PI/12;
 
  public RouteCourbe(Point position, Angle3D angle, String nom, double rayon, double ecartement, double ouverture) {
    super(position, angle, nom);
   
    PointSortie p1 = new PointSortie(0, rayon + ecartement/2);
    PointEntree p2 = new PointEntree((rayon + ecartement/2)*Math.sin(ouverture), (rayon + ecartement/2)*Math.cos(ouverture));
   
    PointEntree p3 = new PointEntree(0, rayon -ecartement/2);
    PointSortie p4 = new PointSortie((rayon - ecartement/2)*Math.sin(ouverture), (rayon - ecartement/2)*Math.cos(ouverture));
   
    CourbeConduite cc1 = new CourbeConduite(this, p2, p1);
    CourbeConduite cc2 = new CourbeConduite(this, p3, p4);
   
    this.addCourbeConduite(cc1);
    this.addCourbeConduite(cc2);
   
    int iterations = (int)(ouverture/FINESSE);
    List<Point> sommets = new ArrayList<Point>();
   
    sommets.add(Point.createPolarNorth(rayon + ecartement, ouverture));
    for (int i=iterations-1; i>0; i--){
      Point pi1 = Point.createPolarNorth(rayon + ecartement/2, i*ouverture/iterations);
      cc1.addPointIntermediaire(pi1);
      Point pf = Point.createPolarNorth(rayon + ecartement, i*ouverture/iterations);
      sommets.add(pf);
    }
    cc1.addArc(new Point(), rayon + ecartement/2, ouverture, -ouverture, iterations-1);
    sommets.add(Point.createPolarNorth(rayon + ecartement, 0));
    sommets.add(Point.createPolarNorth(rayon - ecartement, 0));
    for (int i=1; i<iterations; i++){
      Point pi2 = Point.createPolarNorth(rayon - ecartement/2, i*ouverture/iterations);
      cc2.addPointIntermediaire(pi2);
      Point pf = Point.createPolarNorth(rayon - ecartement, i*ouverture/iterations);
      sommets.add(pf);
    }
    cc2.addArc(new Point(), rayon - ecartement/2, 0, ouverture, iterations-1);
    sommets.add(Point.createPolarNorth(rayon - ecartement, ouverture));
   
    this.addEntree(p2);
    this.addEntree(p3);
    this.addSortie(p1);
    this.addSortie(p4);
   
    this.creerFrontiere(sommets);
  }
 
  /*private void creerFrontiere(double longueur, double ecartement, double ouverture){
    Point3D p1 = new Point3D(-longueur/2, ecartement);
    Point3D p2 = new Point3D(longueur/2, ecartement);
    Point3D p3 = new Point3D(longueur/2, -ecartement);
    Point3D p4 = new Point3D(-longueur/2, -ecartement);
   
    this.addPointFrontiere(p1);
    this.addPointFrontiere(p2);
    this.addPointFrontiere(p3);
    this.addPointFrontiere(p4);
  }*/

}
 
TOP

Related Classes of ds.moteur.route.personnalise.RouteCourbe

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.