summaryrefslogtreecommitdiff
path: root/src/main/java/com/pau101/util/BezierUtils.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/pau101/util/BezierUtils.java')
-rwxr-xr-xsrc/main/java/com/pau101/util/BezierUtils.java42
1 files changed, 24 insertions, 18 deletions
diff --git a/src/main/java/com/pau101/util/BezierUtils.java b/src/main/java/com/pau101/util/BezierUtils.java
index bdaca5c..27b82d5 100755
--- a/src/main/java/com/pau101/util/BezierUtils.java
+++ b/src/main/java/com/pau101/util/BezierUtils.java
@@ -11,11 +11,11 @@ public final class BezierUtils {
* Compute the value of all nth degree Bernstein polynomials.
*
* @param curveDegree
- * : degree of curve
+ * : degree of curve
* @param t
- * : curve parameter on interval [0,1]
+ * : curve parameter on interval [0,1]
* @param scalars
- * : curveDegree + 1 Bernstein values.
+ * : curveDegree + 1 Bernstein values.
*/
public static void allBernstein(int curveDegree, float t,
float scalars[]) {
@@ -38,13 +38,13 @@ public final class BezierUtils {
* Compute point of nth degree Bezier curve.
*
* @param controlPoints
- * : curveDegree + 1 control points
+ * : curveDegree + 1 control points
* @param curveDegree
- * : degree of curve
+ * : degree of curve
* @param t
- * : curve parameter on interval [0,1]
+ * : curve parameter on interval [0,1]
* @param point
- * : resulting point
+ * : resulting point
*/
public static void pointOnBezierCurve(float controlPoints[][],
int curveDegree, float t, float point[]) {
@@ -60,20 +60,24 @@ public final class BezierUtils {
}
/**
- * Compute an approximate length of a Bezier curve given the control
- * points.
+ * Compute an approximate length of a Bezier curve given the
+ * control points.
*
* @param controlPoints
- * : control points of a Bezier curve
+ * : control points of a Bezier curve
* @return the approximate length
*/
public static float approximateLength(float controlPoints[][]) {
float length = 0;
for (int i = 0; i < controlPoints.length - 1; i++) {
- float xDif = controlPoints[i + 1][0] - controlPoints[i][0];
- float yDif = controlPoints[i + 1][1] - controlPoints[i][1];
- float zDif = controlPoints[i + 1][2] - controlPoints[i][2];
- length += Math.sqrt(xDif * xDif + yDif * yDif + zDif * zDif);
+ float xDif = controlPoints[i + 1][0]
+ - controlPoints[i][0];
+ float yDif = controlPoints[i + 1][1]
+ - controlPoints[i][1];
+ float zDif = controlPoints[i + 1][2]
+ - controlPoints[i][2];
+ length += Math.sqrt(xDif * xDif + yDif * yDif
+ + zDif * zDif);
}
return length;
}
@@ -82,22 +86,24 @@ public final class BezierUtils {
float scale) {
float noLessThan = 10 * scale;
float segs = length * scale / 30F;
- return (int) Math.ceil(
- Math.sqrt(segs * segs * 0.6 + noLessThan * noLessThan));
+ return (int) Math.ceil(Math.sqrt(segs * segs * 0.6
+ + noLessThan * noLessThan));
}
public static float[][] curve(float controlPoints[][]) {
return curve(controlPoints, 1);
}
- public static float[][] curve(float controlPoints[][], float scale) {
+ public static float[][] curve(float controlPoints[][],
+ float scale) {
int count = tesselationSegementsForLength(
approximateLength(controlPoints), scale);
float[][] points = new float[count][3];
for (int i = 0; i < count; i++) {
float t = i / (float) (count - 1);
float[] point = new float[3];
- pointOnBezierCurve(controlPoints, controlPoints.length - 1, t,
+ pointOnBezierCurve(controlPoints,
+ controlPoints.length - 1, t,
point);
points[i] = point;
}