|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.jzy3d.maths.algorithms.interpolation.bernstein.Spline3D
public class Spline3D
This is a generic 3D B-Spline class for curves of arbitrary length, control handles and patches are created and joined automatically as described here: ibiblio.org/e-notes/ Splines/Bint.htm
Thanks to a bug report by Aaron Meyers (http://universaloscillation.com) the computeVertices(int) method has a slightly changed behaviour from version 0014 onwards. In earlier versions erroneous duplicate points would be added near each given control point, which lead to various weird results.
The new behaviour of the curve interpolation/computation is described in the docs for the computeVertices(int) method below.
Field Summary | |
---|---|
BernsteinPolynomial |
bernstein
|
float[] |
bi
|
Coord3d[] |
coeffA
|
static float |
DEFAULT_TIGHTNESS
|
Coord3d[] |
delta
|
protected float |
invTightness
|
protected int |
numP
|
List<Coord3d> |
pointList
|
protected Coord3d[] |
points
|
protected float |
tightness
|
List<Coord3d> |
vertices
|
Constructor Summary | |
---|---|
Spline3D()
Constructs an empty spline container with default curve tightness. |
|
Spline3D(Coord3d[] pointArray)
|
|
Spline3D(Coord3d[] pointArray,
BernsteinPolynomial b,
float tightness)
|
|
Spline3D(List<Coord3d> rawPoints)
|
|
Spline3D(List<Coord3d> rawPoints,
BernsteinPolynomial b,
float tightness)
|
Method Summary | |
---|---|
Spline3D |
add(Coord3d p)
Adds the given point to the list of control points. |
Spline3D |
add(float x,
float y,
float z)
|
List<Coord3d> |
computeVertices(int res)
Computes all curve vertices based on the resolution/number of subdivisions requested. |
protected void |
findCPoints()
|
List<Coord3d> |
getDecimatedVertices(float step)
|
int |
getNumPoints()
Returns the number of key points. |
List<Coord3d> |
getPointList()
|
float |
getTightness()
|
Spline3D |
setPointList(List<Coord3d> plist)
|
Spline3D |
setTightness(float tightness)
Sets the tightness for future curve interpolation calls. |
void |
updateCoefficients()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final float DEFAULT_TIGHTNESS
protected Coord3d[] points
public List<Coord3d> pointList
public List<Coord3d> vertices
public BernsteinPolynomial bernstein
public Coord3d[] delta
public Coord3d[] coeffA
public float[] bi
protected float tightness
protected float invTightness
protected int numP
Constructor Detail |
---|
public Spline3D()
add(Coord3d)
.
public Spline3D(List<Coord3d> rawPoints)
rawPoints
- list of control point vectorspublic Spline3D(List<Coord3d> rawPoints, BernsteinPolynomial b, float tightness)
rawPoints
- list of control point vectorsb
- predefined Bernstein polynomial (good for reusing)tightness
- default curve tightness used for the interpolated vertices
setTightness(float)public Spline3D(Coord3d[] pointArray)
public Spline3D(Coord3d[] pointArray, BernsteinPolynomial b, float tightness)
pointArray
- array of control point vectorsb
- predefined Bernstein polynomial (good for reusing)tightness
- default curve tightness used for the interpolated vertices
setTightness(float)Method Detail |
---|
public Spline3D add(float x, float y, float z)
public Spline3D add(Coord3d p)
p
-
public List<Coord3d> computeVertices(int res)
Computes all curve vertices based on the resolution/number of subdivisions requested. The higher, the more vertices are computed:
(number of control points - 1) * resolution + 1
Since version 0014 the automatic placement of the curve handles can also be manipulated via the setTightness(float) method.
res
- the number of vertices to be computed per segment between
original control points (incl. control point always at the
start of each segment)
protected void findCPoints()
public List<Coord3d> getDecimatedVertices(float step)
public int getNumPoints()
public List<Coord3d> getPointList()
public float getTightness()
setTightness(float)
public Spline3D setPointList(List<Coord3d> plist)
pointList
- the pointList to setpublic Spline3D setTightness(float tightness)
tightness
- the tightness value used for the next call to
computeVertices(int)
public void updateCoefficients()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |