JavaCAD
Vertex.java
Go to the documentation of this file.
1 
34 package eu.mihosoft.vrl.v3d;
35 
36 import java.util.Objects;
37 
38 // TODO: Auto-generated Javadoc
44 public class Vertex {
45 
49  public Vector3d pos;
50 
54  public Vector3d normal;
55 
57  private double weight = 1.0;
58 
66  this.pos = pos;
67  this.normal = normal;
68  }
69 
70 
78  private Vertex(Vector3d pos, Vector3d normal, double weight) {
79  this.pos = pos;
80  this.normal = normal;
81  this.weight = weight;
82  }
83 
84  /* (non-Javadoc)
85  * @see java.lang.Object#clone()
86  */
87  @Override
88  public Vertex clone() {
89  return new Vertex(pos.clone(), normal.clone(), weight);
90  }
91 
95  public void flip() {
96  normal = normal.negated();
97  }
98 
107  public Vertex interpolate(Vertex other, double t) {
108  return new Vertex(pos.lerp(other.pos, t),
109  normal.lerp(other.normal, t));
110  }
111 
117  public String toStlString() {
118  return "vertex " + this.pos.toStlString();
119  }
120 
127  public StringBuilder toStlString(StringBuilder sb) {
128  sb.append("vertex ");
129  return this.pos.toStlString(sb);
130  }
131 
138  public StringBuilder toObjString(StringBuilder sb) {
139  sb.append("v ");
140  return this.pos.toObjString(sb).append("\n");
141  }
142 
148  public String toObjString() {
149  return toObjString(new StringBuilder()).toString();
150  }
151 
160  return this;
161  }
162 
170  return clone().transform(transform);
171  }
172 
178  public double getWeight() {
179  return weight;
180  }
181 
187  public void setWeight(double weight) {
188  this.weight = weight;
189  }
190 
191  /* (non-Javadoc)
192  * @see java.lang.Object#hashCode()
193  */
194  @Override
195  public int hashCode() {
196  int hash = 7;
197  hash = 53 * hash + Objects.hashCode(this.pos);
198  return hash;
199  }
200 
201  /* (non-Javadoc)
202  * @see java.lang.Object#equals(java.lang.Object)
203  */
204  @Override
205  public boolean equals(Object obj) {
206  if (obj == null) {
207  return false;
208  }
209  if (getClass() != obj.getClass()) {
210  return false;
211  }
212  final Vertex other = (Vertex) obj;
213  if (!this.pos.test(other.pos,Plane.EPSILON_Point)) {
214  return false;
215  }
216  return true;
217  }
218 
219  /* (non-Javadoc)
220  * @see java.lang.Object#toString()
221  */
222  @Override
223  public String toString() {
224  return pos.toString();
225  }
226 
227 
228 public double getX() {
229  return pos.x;
230 }
231 public double getY() {
232  return pos.y;
233 }
234 public double getZ() {
235  return pos.z;
236 }
237 
238 
239 }
static final double EPSILON_Point
Definition: Plane.java:56
Vector3d transform(Transform transform)
Definition: Vector3d.java:348
static Vector3d y(double y)
Definition: Vector3d.java:484
static Vector3d z(double z)
Definition: Vector3d.java:494
boolean test(Object obj, double epsilon)
Definition: Vector3d.java:405
Vector3d lerp(Vector3d a, double t)
Definition: Vector3d.java:245
static Vector3d x(double x)
Definition: Vector3d.java:474
boolean equals(Object obj)
Definition: Vertex.java:205
Vertex transform(Transform transform)
Definition: Vertex.java:158
void setWeight(double weight)
Definition: Vertex.java:187
Vertex(Vector3d pos, Vector3d normal)
Definition: Vertex.java:65
StringBuilder toObjString(StringBuilder sb)
Definition: Vertex.java:138
Vertex(Vector3d pos, Vector3d normal, double weight)
Definition: Vertex.java:78
StringBuilder toStlString(StringBuilder sb)
Definition: Vertex.java:127
Vertex interpolate(Vertex other, double t)
Definition: Vertex.java:107
Vertex transformed(Transform transform)
Definition: Vertex.java:169