码迷,mamicode.com
首页 > 编程语言 > 详细

冯斌:JavaFx实例(十四)“CubicBezierCurve”

时间:2014-11-19 02:05:41      阅读:294      评论:0      收藏:0      [点我收藏+]

标签:实例   冯斌   javafx   

    本实例演示三次方贝塞尔曲线,数学数值分析领域中,贝塞尔曲线英语:Bézier curve)是电脑图形学中相当重要的参数曲线。更高维度的广泛化贝塞尔曲线就称作贝塞尔曲面,其中贝塞尔三角是一种特殊的实例。以下是贝塞尔曲线的实例:

线性贝塞尔曲线

给定点P0P1,线性贝塞尔曲线只是一条两点之间的直线。这条线由下式给出:

  • bubuko.com,布布扣

且其等同于线性插值

二次方贝塞尔曲线

二次方贝塞尔曲线的路径由给定点P0P1P2的函数Bt)追踪:

  • bubuko.com,布布扣

TrueType字型就运用了以贝塞尔样条组成的二次贝塞尔曲线。


三次方贝塞尔曲线

P0P1P2P3四个点在平面或在三维空间中定义了三次方贝塞尔曲线。曲线起始于P0走向P1,并从P2的方向来到P3。一般不会经过P1P2;这两个点只是在那里提供方向资讯。P0P1之间的间距,决定了曲线在转而趋进P3之前,走向P2方向的“长度有多长”。

曲线的参数形式为:

  • bubuko.com,布布扣


本实例的代码如下:

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();
    }
}


运行结果如下

bubuko.com,布布扣

本文出自 “冯斌的技术博客” 博客,请务必保留此出处http://fengbin8606.blog.51cto.com/8840305/1579316

冯斌:JavaFx实例(十四)“CubicBezierCurve”

标签:实例   冯斌   javafx   

原文地址:http://fengbin8606.blog.51cto.com/8840305/1579316

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!