Beispiel #1
0
  /**
   * Create a new triangle with the three given edges as a basis.
   *
   * <p>An integrity check is processed while building the triangle. This constructor is the best
   * way to ensure that already existing edges will be linked to the good triangles, and that ther
   * won't be any edge duplication in the data structures.
   *
   * @param e1
   * @param e2
   * @param e3
   * @throws DelaunayError If there is at least two edges that don't share exactly a point.
   */
  public DTriangle(DEdge e1, DEdge e2, DEdge e3) throws DelaunayError {
    super();
    init();

    // We check the integrity of the edges given to build this triangle
    boolean integrityE1E2 =
        (e1.isExtremity(e2.getStartPoint()) && !e3.isExtremity((e2.getStartPoint())))
            || (e1.isExtremity(e2.getEndPoint()) && !e3.isExtremity(e2.getEndPoint()));
    boolean integrityE1EptNb =
        (e1.isExtremity(e3.getStartPoint()) && !e2.isExtremity((e3.getStartPoint())))
            || (e1.isExtremity(e3.getEndPoint()) && !e2.isExtremity(e3.getEndPoint()));
    boolean integrityEptNbE2 =
        (e2.isExtremity(e3.getStartPoint()) && !e1.isExtremity((e3.getStartPoint())))
            || (e2.isExtremity(e3.getEndPoint()) && !e1.isExtremity(e3.getEndPoint()));

    if (integrityE1E2 && integrityE1EptNb && integrityEptNbE2) {
      edges[0] = e1;
      edges[1] = e2;
      edges[2] = e3;

      connectEdges();
      computeCenter();
      radius = e1.getStartPoint().squareDistance2D(xCenter, yCenter);
    } else {
      throw new DelaunayError(
          "Problem while generating the Triangle : "
              + integrityE1E2
              + " "
              + integrityE1EptNb
              + " "
              + integrityEptNbE2);
    }
  }
Beispiel #2
0
  /**
   * Create a DTriangle from another triangle<br>
   * NB : it doesn't update edges connection - topology is not preserved.
   *
   * @param aTriangle
   */
  public DTriangle(DTriangle aTriangle) {
    super((Element) aTriangle);
    init();
    System.arraycopy(aTriangle.edges, 0, edges, 0, PT_NB);

    xCenter = aTriangle.xCenter;
    yCenter = aTriangle.yCenter;
    radius = aTriangle.radius;
  }
Beispiel #3
0
 /**
  * Create a new triangle with three input points.
  *
  * @param p1
  * @param p2
  * @param p3
  * @throws DelaunayError
  */
 public DTriangle(DPoint p1, DPoint p2, DPoint p3) throws DelaunayError {
   super();
   init();
   DEdge e1 = new DEdge(p1, p2);
   DEdge e2 = new DEdge(p2, p3);
   DEdge e3 = new DEdge(p3, p1);
   edges[0] = e1;
   edges[1] = e2;
   edges[2] = e3;
   connectEdges();
   computeCenter();
   radius = e1.getStartPoint().squareDistance2D(xCenter, yCenter);
 }