Add QuadraticBezierCurve shape

pull/35/head
James Ball 2020-10-20 20:31:25 +01:00
rodzic 5f4fc501ec
commit edafa0028f
2 zmienionych plików z 32 dodań i 6 usunięć

Wyświetl plik

@ -9,8 +9,8 @@ public class CubicBezierCurve extends Shape {
private final double factor;
private final Vector2 translation;
public CubicBezierCurve(Vector2 p0, Vector2 p1, Vector2 p2, Vector2 p3, double weight, double factor,
Vector2 translation) {
public CubicBezierCurve(Vector2 p0, Vector2 p1, Vector2 p2, Vector2 p3, double weight,
double factor, Vector2 translation) {
this.p0 = p0;
this.p1 = p1;
this.p2 = p2;
@ -37,14 +37,18 @@ public class CubicBezierCurve extends Shape {
@Override
public float nextX(double t) {
return (float) (Math.pow(1 - t, 3) * factor * p0.getX() + 3 * Math.pow(1 - t, 2) * t * factor * p1.getX()
+ 3 * (1 - t) * Math.pow(t, 2) * factor * p2.getX() + Math.pow(t, 3) * factor * p3.getX());
return (float) (Math.pow(1 - t, 3) * factor * p0.getX()
+ 3 * Math.pow(1 - t, 2) * t * factor * p1.getX()
+ 3 * (1 - t) * Math.pow(t, 2) * factor * p2.getX()
+ Math.pow(t, 3) * factor * p3.getX());
}
@Override
public float nextY(double t) {
return (float) (Math.pow(1 - t, 3) * factor * p0.getY() + 3 * Math.pow(1 - t, 2) * t * factor * p1.getY()
+ 3 * (1 - t) * Math.pow(t, 2) * factor * p2.getY() + Math.pow(t, 3) * factor * p3.getY());
return (float) (Math.pow(1 - t, 3) * factor * p0.getY()
+ 3 * Math.pow(1 - t, 2) * t * factor * p1.getY()
+ 3 * (1 - t) * Math.pow(t, 2) * factor * p2.getY()
+ Math.pow(t, 3) * factor * p3.getY());
}
@Override

Wyświetl plik

@ -0,0 +1,22 @@
package shapes;
public class QuadraticBezierCurve extends CubicBezierCurve {
public QuadraticBezierCurve(Vector2 p0, Vector2 p1, Vector2 p2, double weight,
double factor, Vector2 translation) {
super(p0, p1, p1, p2, weight, factor, translation);
}
public QuadraticBezierCurve(Vector2 p0, Vector2 p1, Vector2 p2, double factor,
Vector2 translation) {
super(p0, p1, p1, p2, factor, translation);
}
public QuadraticBezierCurve(Vector2 p0, Vector2 p1, Vector2 p2, double factor) {
super(p0, p1, p1, p2, factor);
}
public QuadraticBezierCurve(Vector2 p0, Vector2 p1, Vector2 p2) {
super(p0, p1, p1, p2);
}
}