Skip to content

Instantly share code, notes, and snippets.

@dha-lo-jd
Created November 24, 2013 09:41
Show Gist options
  • Save dha-lo-jd/7625261 to your computer and use it in GitHub Desktop.
Save dha-lo-jd/7625261 to your computer and use it in GitHub Desktop.
public static Vec3D[] getBezier2D(double startX, double startZ,
double startVectorX, double startVectorZ, double endX, double endZ,
double endVectorX, double endVectorZ, int vertexFactor) {
Vec3D startPoint = Vec3D.createVector(startX, 0, startZ);
Vec3D startVector = Vec3D.createVector(startX + startVectorX, 0, startZ
+ startVectorZ);
Vec3D endPoint = Vec3D.createVector(endX, 0, endZ);
Vec3D endVector = Vec3D.createVector(endX + endVectorX, 0, endZ
+ endVectorZ);
return getBezier2D(startPoint, startVector, endPoint, endVector,
vertexFactor);
}
public static Vec3D[] getBezier2D(Vec3D startPoint, Vec3D startVector,
Vec3D endPoint, Vec3D endVector, int vertexFactor) {
Vec3D[] points = new Vec3D[vertexFactor];
for (int i = 0; i < vertexFactor; i++) {
double rate = i / (double) vertexFactor;
double x = startPoint.xCoord * (1 - rate) * (1 - rate) * (1 - rate)
+ 3 * startVector.xCoord * rate * (1 - rate) * (1 - rate)
+ 3 * endVector.xCoord * rate * rate * (1 - rate)
+ endPoint.xCoord * rate * rate * rate;
double z = startPoint.zCoord * (1 - rate) * (1 - rate) * (1 - rate)
+ 3 * startVector.zCoord * rate * (1 - rate) * (1 - rate)
+ 3 * endVector.zCoord * rate * rate * (1 - rate)
+ endPoint.zCoord * rate * rate * rate;
Vec3D v3d = Vec3D.createVector(x, 0, z);
points[i] = v3d;
}
return points;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment