package com.revolsys.geometry.model.impl;
public class TriangleDoubleXYZ extends AbstractTriangle {
private static final long serialVersionUID = 1l;
private final double x1;
private final double y1;
private final double z1;
private final double x2;
private final double y2;
private final double z2;
private final double x3;
private final double y3;
private final double z3;
public TriangleDoubleXYZ(final double... triangleCoordinates) {
this.x1 = triangleCoordinates[0];
this.y1 = triangleCoordinates[1];
this.z1 = triangleCoordinates[2];
this.x2 = triangleCoordinates[3];
this.y2 = triangleCoordinates[4];
this.z2 = triangleCoordinates[5];
this.x3 = triangleCoordinates[6];
this.y3 = triangleCoordinates[7];
this.z3 = triangleCoordinates[8];
}
public TriangleDoubleXYZ(final double x1, final double y1, final double z1, final double x2,
final double y2, final double z2, final double x3, final double y3, final double z3) {
this.x1 = x1;
this.y1 = y1;
this.z1 = z1;
this.x2 = x2;
this.y2 = y2;
this.z2 = z2;
this.x3 = x3;
this.y3 = y3;
this.z3 = z3;
}
@Override
public TriangleDoubleXYZ clone() {
return (TriangleDoubleXYZ)super.clone();
}
@Override
public int getAxisCount() {
return 3;
}
@Override
public double getCoordinate(final int vertexIndex, final int axisIndex) {
switch (axisIndex) {
case 0:
switch (vertexIndex) {
case 0:
case 3:
return this.x1;
case 1:
return this.x2;
case 2:
return this.x3;
default:
return Double.NaN;
}
case 1:
switch (vertexIndex) {
case 0:
case 3:
return this.y1;
case 1:
return this.y2;
case 2:
return this.y3;
default:
return Double.NaN;
}
case 2:
switch (vertexIndex) {
case 0:
case 3:
return this.z1;
case 1:
return this.z2;
case 2:
return this.z3;
default:
return Double.NaN;
}
default:
return Double.NaN;
}
}
@Override
public double[] getCoordinates() {
return new double[] {
this.x1, this.y1, this.z1, this.x2, this.y2, this.z2, this.x3, this.y3, this.z3
};
}
@Override
public double getX(final int vertexIndex) {
switch (vertexIndex) {
case 0:
case 3:
return this.x1;
case 1:
return this.x2;
case 2:
return this.x3;
default:
return Double.NaN;
}
}
@Override
public double getY(final int vertexIndex) {
switch (vertexIndex) {
case 0:
case 3:
return this.y1;
case 1:
return this.y2;
case 2:
return this.y3;
default:
return Double.NaN;
}
}
@Override
public double getZ(final int vertexIndex) {
switch (vertexIndex) {
case 0:
case 3:
return this.z1;
case 1:
return this.z2;
case 2:
return this.z3;
default:
return Double.NaN;
}
}
}