如何在 JavaFX 中为一根弯曲的吸管建模

How to model a bending straw in JavaFX

我的目标是当用户滑动 Slider 时,一个像吸管一样的物体从中间弯曲。

有点像这样: http://s.hswstatic.com/gif/bendy-straw-a-1.jpg

我花了好几天时间寻找使用 JavaFX 形状对其进行建模的方法,但也许我遗漏了一些明显的东西。当 Slider 为零时,形状应该是一条直线,而当 Slider 一直弯曲时,形状应该类似于双曲线的手臂。

非常感谢。

你必须正确地计算出数学,但我的想法是这样的。您甚至可以尝试将控制点 Y 留在线的中间,我将其向上移动,因为我认为它更逼真,就像它会在底部开始弯曲一样。你还必须做一些微积分来找出终点。长度应该不会改变。

package curve;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Slider;
import javafx.scene.paint.Color;
import javafx.scene.shape.QuadCurve;
import javafx.stage.Stage;

public class Curve extends Application {

    @Override
    public void start(Stage primaryStage) {

        QuadCurve qc = new QuadCurve(100, 500, 100, 250, 100, 0);
        qc.setStroke(Color.BLUE);
        qc.setStrokeWidth(5);
        qc.setFill(Color.TRANSPARENT);

        Slider slider = new Slider(0, 200, 0);
        qc.endXProperty().bind(slider.valueProperty().add(100));
        qc.endYProperty().bind(slider.valueProperty().add(100).divide(1.2));
        qc.controlYProperty().bind(slider.valueProperty().multiply(-1).add(500));

        Group group = new Group(qc,slider);
        Scene scene = new Scene(group, 500,500);

        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

}