本实例演示三次方贝塞尔曲线,在数学的数值分析领域中,贝塞尔曲线(英语: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(); } }
运行结果如下
本文出自 “冯斌的技术博客” 博客,请务必保留此出处http://fengbin8606.blog.51cto.com/8840305/1579316
冯斌:JavaFx实例(十四)“CubicBezierCurve”
原文地址:http://fengbin8606.blog.51cto.com/8840305/1579316