Class ConstraintVertex

 1 /*
 2  * Copyright (c) 2016 Vivid Solutions.
 3  *
 4  * All rights reserved. This program and the accompanying materials
 5  * are made available under the terms of the Eclipse Public License 2.0
 6  * and Eclipse Distribution License v. 1.0 which accompanies this distribution.
 7  * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v20.html
 8  * and the Eclipse Distribution License is available at
 9  *
10  * http://www.eclipse.org/org/documents/edl-v10.php.
11  */
12 package org.locationtech.jts.triangulate;
13  
14  
15 import org.locationtech.jts.geom.Coordinate;
16 import org.locationtech.jts.triangulate.quadedge.Vertex;
17  
18 /**
19  * A vertex in a Constrained Delaunay Triangulation.
20  * The vertex may or may not lie on a constraint.
21  * If it does it may carry extra information about the original constraint.
22  * 
23  * @author Martin Davis
24  */
25 public class ConstraintVertex extends Vertex {
26     private boolean isOnConstraint;
27     private Object  constraint = null;
28  
29     /**
30      * Creates a new constraint vertex
31      * 
32      * @param p the location of the vertex
33      */
34     public ConstraintVertex(Coordinate p) {
35         super(p);
36     }
37  
38     /**
39      * Sets whether this vertex lies on a constraint.
40      * 
41      * @param isOnConstraint true if this vertex lies on a constraint
42      */
43     public void setOnConstraint(boolean isOnConstraint) {
44         this.isOnConstraint = isOnConstraint;
45     }
46  
47     /**
48      * Tests whether this vertex lies on a constraint.
49      * 
50      * @return true if the vertex lies on a constraint
51      */
52     public boolean isOnConstraint() {
53         return isOnConstraint;
54     }
55  
56     /**
57      * Sets the external constraint information
58      * 
59      * @param constraint an object which carries information about the constraint this vertex lies on
60      */
61     public void setConstraint(Object constraint) {
62         isOnConstraint = true;
63         this.constraint = constraint;
64     }
65  
66     /**
67      * Gets the external constraint object
68      * 
69      * @return the external constraint object
70      */
71     public Object getConstraint() {
72         return constraint;
73     }
74  
75     /**
76      * Merges the constraint data in the vertex <tt>other</tt> into this vertex. 
77      * This method is called when an inserted vertex is
78      * very close to an existing vertex in the triangulation.
79      * 
80      * @param other the constraint vertex to merge
81      */
82     protected void merge(ConstraintVertex other) {
83         if (other.isOnConstraint) {
84             isOnConstraint = true;
85             constraint = other.constraint;
86         }
87     }
88 }
89