Package ds.moteur.route.personnalise

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

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 RouteDroite extends Route implements Serializable{

  public RouteDroite(){
    super();
  }
 
  public RouteDroite(Point position, Angle3D angle, String nom) {
    super(position, angle, nom);
  }
 
  private void creerFrontiere(double longueur, double ecartement){
    Point p1 = new Point(-longueur/2, ecartement);
    Point p2 = new Point(-longueur/2, -ecartement);
    Point p3 = new Point(longueur/2, -ecartement);
    Point p4 = new Point(longueur/2, ecartement);
   
    List<Point> sommets = new ArrayList<Point>();
    sommets.add(p1);
    sommets.add(p2);
    sommets.add(p3);
    sommets.add(p4);
    this.creerFrontiere(sommets);
  }
 
  public static Route createRoute(Point position, Angle3D angle, String nom, double longueur, double ecartement, int nbVoies, boolean sensUnique){
    RouteDroite route;
    if(sensUnique){
      route = new RouteDroite(position, angle, nom);
     
      for(int i=0; i<nbVoies; i++){
        PointSortie ps = new PointSortie(longueur/2, i*ecartement - (nbVoies-1)*(ecartement/2));
        PointEntree pe = new PointEntree(-longueur/2, i*ecartement - (nbVoies-1)*(ecartement/2));
       
        CourbeConduite cc = new CourbeConduite(route, pe, ps);
        cc.addSegment();
       
        route.addCourbeConduite(cc);
        route.addEntree(pe);
        route.addSortie(ps);
      }
     
      route.creerFrontiere(longueur, ecartement*nbVoies/2);
    } else {
      route = new RouteDroite(position, angle, nom);
     
      for(int i=0; i<nbVoies; i++){
        PointSortie p1 = new PointSortie(-longueur/2, ecartement/2 + i*ecartement);
        PointEntree p2 = new PointEntree(longueur/2, ecartement/2 + i*ecartement);
       
        PointEntree p3 = new PointEntree(-longueur/2, -ecartement/2 - i*ecartement);
        PointSortie p4 = new PointSortie(longueur/2, -ecartement/2 - i*ecartement);
       
        CourbeConduite cc1 = new CourbeConduite(route, p2, p1);
        cc1.addSegment();
        CourbeConduite cc2 = new CourbeConduite(route, p3, p4);
        cc2.addSegment();
       
        route.addCourbeConduite(cc1);
        route.addCourbeConduite(cc2);
       
        route.addEntree(p2);
        route.addEntree(p3);
        route.addSortie(p1);
        route.addSortie(p4);
      }
     
      route.creerFrontiere(longueur, ecartement*nbVoies);
    }
    return route;
  }
}
TOP

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

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.