本实例演示三次方贝塞尔曲线,在数学的数值分析领域中,贝塞尔曲线(英语:Bézier curve)是电脑图形学中相当重要的参数曲线。更高维度的广泛化贝塞尔曲线就称作贝塞尔曲面,其中贝塞尔三角是一种特殊的实例。以下是贝塞尔曲线的实例:
线性贝塞尔曲线
给定点P0、P1,线性贝塞尔曲线只是一条两点之间的直线。这条线由下式给出:
且其等同于线性插值。
二次方贝塞尔曲线
二次方贝塞尔曲线的路径由给定点P0、P1、P2的函数B(t)追踪:
。
TrueType字型就运用了以贝塞尔样条组成的二次贝塞尔曲线。
三次方贝塞尔曲线
P0、P1、P2、P3四个点在平面或在三维空间中定义了三次方贝塞尔曲线。曲线起始于P0走向P1,并从P2的方向来到P3。一般不会经过P1或P2;这两个点只是在那里提供方向资讯。P0和P1之间的间距,决定了曲线在转而趋进P3之前,走向P2方向的“长度有多长”。
曲线的参数形式为:
本实例的代码如下:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.scene.shape.*;
public class CubicBezierCurve extends Application {
public void start(Stage primaryStage) {
Pane pane = new Pane();
CubicCurve cubicCurve = new CubicCurve() ;
cubicCurve.setStartX(50);
cubicCurve.setStartY(75);
cubicCurve.setControlX1(80);
cubicCurve.setControlY1(-25);
cubicCurve.setControlX2(110);
cubicCurve.setControlY2(175);
cubicCurve.setEndX(140);
cubicCurve.setEndY(75) ;
cubicCurve.setStroke(Color.BLACK);
cubicCurve.setStrokeWidth(3);
cubicCurve.setFill(Color.WHITE);
pane.getChildren().add(cubicCurve);
Scene scene =new Scene(pane,200,150);
primaryStage.setTitle("CubicBezierCurve");
primaryStage.setScene(scene);
primaryStage.show();
}
}
运行结果如下
转载于:https://blog.51cto.com/fengbin8606/1579316