2016-05-02 14 views
0

私の目標は、ユーザーがスライダーをスライドさせるときに、ストローのようなオブジェクトが途中から曲がるようにすることです。ソートのこのようなJavaFXで折り畳みストローをモデル化する方法

http://s.hswstatic.com/gif/bendy-straw-a-1.jpg

私はJavaFXの形状でこれをモデル化する方法を探し日間を過ごしましたが、多分私は何かを明らかに不足しています。スライダがゼロのとき、シェイプは直線になりますが、スライダが完全に曲がっているときは、シェイプは双曲線の腕に似ています。

ありがとうございました。

+0

私はhttps://docs.oracle.com/javase/8/javafx/api/javafx/scene/shape/CubicCurve.htmlを使用します。私はあなたがその行のすべてのバンプを望んでいないことを願って、それは難しいでしょう – brian

+0

私はAPIのすべてのドキュメントを見てきました、問題はちょうどコントロールポイントを設定する場所ですか?そして、いいえ、バンプは必要ありません。 –

+0

申し訳ありませんが、私はQuadQurveを意味し、スライダが動いたときにコントロールとエンドポイントの両方を移動する必要があります。 – brian

答えて

0

あなたは正しく数学を理解する必要がありますが、このようなものは私が気にしていたものです。コントロールポイント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); 
    } 

} 
+0

申し分なく、数学です! –

関連する問題