public abstract class AbstractDrawable3DObject
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
protected BoundingBox |
bbox |
protected java.awt.Color |
color |
protected java.awt.Color[] |
colors |
protected Vector3d |
normal |
protected double |
nv0v1 |
protected int |
precedence |
static double |
PRECISION |
protected Vector3d |
v0 |
protected Vector3d |
v0v1 |
protected Vector3d |
v1 |
protected Vector3d[] |
vertices |
Constructor and Description |
---|
AbstractDrawable3DObject(Vector3d[] vertices,
java.awt.Color[] colors)
Default constructor
|
Modifier and Type | Method and Description |
---|---|
abstract void |
draw(java.awt.Graphics2D g2d)
Draw this object on a Graphics2D object
|
static java.awt.Shape |
getClip(double[] clip)
Get the clipping shape (for 2D view)
|
protected static java.awt.Color |
getColorsBarycenter(java.awt.Color c1,
java.awt.Color c2,
double w1,
double w2) |
Vector3d |
getNormal()
Get the normal vector.
|
int |
getPrecedence()
Get the precedence of this object, i.e.
|
protected java.awt.geom.Path2D |
getProjectedContour()
Get the projected contour (i.e.
|
protected java.awt.geom.Path2D |
getProjectedPolyLine()
Get the projected polyline of this object
|
Vector3d |
getProvidedNormal()
Get the normal vector.
|
int |
isBehind(Vector3d v,
double a) |
static boolean |
isBehind(Vector3d M,
Vector3d v,
double a) |
protected boolean |
isDegenerate() |
protected static boolean |
isEqual(double d1,
double d2) |
protected static boolean |
isGreaterOrEqual(double d1,
double d2) |
protected static boolean |
isLowerOrEqual(double d1,
double d2) |
static boolean |
isMonochromatic(java.awt.Color[] colors)
Test if an array of colors contains only one color or not
|
protected boolean |
isNanOrInf() |
static boolean |
isNanOrInf(Vector3d v) |
protected static boolean |
isNegativeOrNull(double d) |
protected static boolean |
isNull(double d) |
protected boolean |
isPlanar()
Determinates if the object is contained into a plane
|
protected static boolean |
isPositiveOrNull(double d) |
static void |
makeClip(double[] clip,
double[] v)
Create a clip rect for 2D view according to clipping planes passed as arguments
|
protected static double[] |
minmax2D(AbstractDrawable3DObject o,
double x,
double y)
Get min-max of the projections of the vertices of o on v
|
protected static double[] |
minmax3D(AbstractDrawable3DObject o,
Vector3d v)
Get min-max of the projections of the vertices of o on v
|
static void |
resetDefaultPrecedence()
Reset the default precedence
|
protected void |
setNormal()
Set the normal vector
|
void |
setPrecedence(int precedence)
Set the precedence of this object.
|
public static final double PRECISION
protected final Vector3d[] vertices
protected final java.awt.Color[] colors
protected final java.awt.Color color
protected int precedence
protected Vector3d v0
protected Vector3d v1
protected Vector3d v0v1
protected double nv0v1
protected Vector3d normal
protected BoundingBox bbox
public AbstractDrawable3DObject(Vector3d[] vertices, java.awt.Color[] colors) throws InvalidPolygonException
vertices
- the verticesInvalidPolygonException
public static boolean isMonochromatic(java.awt.Color[] colors)
colors
- the colors arraypublic abstract void draw(java.awt.Graphics2D g2d)
g2d
- the Graphics2d object where to drawpublic static void resetDefaultPrecedence()
public void setPrecedence(int precedence)
precedence
- the precedence of this objectpublic int getPrecedence()
the
- precedencepublic Vector3d getProvidedNormal()
public Vector3d getNormal()
protected void setNormal()
protected boolean isPlanar()
public int isBehind(Vector3d v, double a)
protected java.awt.geom.Path2D getProjectedPolyLine()
protected java.awt.geom.Path2D getProjectedContour()
protected static final boolean isNull(double d)
d
- a numberprotected static final boolean isPositiveOrNull(double d)
d
- a numberprotected static final boolean isNegativeOrNull(double d)
d
- a numberprotected static final boolean isGreaterOrEqual(double d1, double d2)
d1
- a numberd2
- a numberprotected static final boolean isLowerOrEqual(double d1, double d2)
d1
- a numberd2
- a numberprotected static final boolean isEqual(double d1, double d2)
d1
- a numberd2
- a numberprotected static final double[] minmax3D(AbstractDrawable3DObject o, Vector3d v)
o
- an objectv
- a vectorprotected static final double[] minmax2D(AbstractDrawable3DObject o, double x, double y)
o
- an objectv
- a vectorprotected static final java.awt.Color getColorsBarycenter(java.awt.Color c1, java.awt.Color c2, double w1, double w2)
protected boolean isDegenerate()
protected boolean isNanOrInf()
public static final boolean isNanOrInf(Vector3d v)
public static final void makeClip(double[] clip, double[] v)
v
- the clipping plane equationpublic static final java.awt.Shape getClip(double[] clip)