JavaFX - Formes 2D CubicCurve

Une CubicCurve est décrite par une fonction polynomiale du troisième degré de deux variables, et peut être écrite sous la forme suivante -

Ces courbes de Bézier sont généralement utilisées en infographie. Ce sont des courbes paramétriques qui semblent raisonnablement lisses à toutes les échelles. Ces courbes sont dessinées sur la base de points sur le plan XY.

Une courbe cubique est une courbe paramétrique de Bézier dans le plan XY est une courbe de degré 3. Elle est dessinée en utilisant quatre points - Start Point, End Point, Control Point and Control Point2 comme indiqué dans le diagramme suivant.

Dans JavaFX, un CubicCurve est représenté par une classe nommée CubicCurve. Cette classe appartient au packagejavafx.scene.shape.

En instanciant cette classe, vous pouvez créer un nœud CubicCurve dans JavaFX.

Cette classe a 8 propriétés du double type de données à savoir -

  • startX - La coordonnée x du point de départ de la courbe.

  • startY - La coordonnée y du point de départ de la courbe.

  • controlX1 - La coordonnée x du premier point de contrôle de la courbe.

  • controlY1 - La coordonnée y du premier point de contrôle de la courbe.

  • controlX2 - La coordonnée x du deuxième point de contrôle de la courbe.

  • controlY2 - La coordonnée y du deuxième point de contrôle de la courbe.

  • endX - La coordonnée x du point final de la courbe.

  • endY - La coordonnée y du point final de la courbe.

Pour dessiner une courbe cubique, vous devez passer des valeurs à ces propriétés, soit en les passant au constructeur de cette classe, dans le même ordre, au moment de l'instanciation, comme indiqué ci-dessous -

CubicCurve cubiccurve = new CubicCurve(
   startX, startY, controlX1, controlY1, controlX2, controlY2, endX, endY);

Ou, en utilisant leurs méthodes de setter respectives comme suit -

setStartX(value); 
setStartY(value); 
setControlX1(value); 
setControlY1(value); 
setControlX2(value); 
setControlY2(value); 
setEndX(value); 
setEndY(value);

Étapes pour dessiner CubicCurve

Pour dessiner une courbe cubique de Bézier dans JavaFX, suivez les étapes ci-dessous.

Étape 1: Créer une classe

Créez une classe Java et héritez du Application classe du package javafx.application et mettre en œuvre le start() méthode de cette classe comme suit.

public class ClassName extends Application {  
   @Override     
   public void start(Stage primaryStage) throws Exception {      
   }    
}

Étape 2: Création d'une CubicCurve

Vous pouvez créer un CubicCurve dans JavaFX en instanciant la classe nommée CubicCurve qui appartient à un package javafx.scene.shape. Vous pouvez instancier cette classe comme suit.

//Creating an object of the class CubicCurve         
CubicCurve cubiccurve = new CubicCurve();

Étape 3: Définition des propriétés de CubicCurve

Spécifiez les coordonnées x, y des quatre points: start point, end point, control point1 et control point2 de la courbe requise, en utilisant leurs méthodes de réglage respectives comme indiqué dans le bloc de code suivant.

//Setting properties to cubic curve 
cubicCurve.setStartX(100.0f); 
cubicCurve.setStartY(150.0f); 
cubicCurve.setControlX1(400.0f); 
cubicCurve.setControlY1(40.0f); 
cubicCurve.setControlX2(175.0f); 
cubicCurve.setControlY2(250.0f); 
cubicCurve.setEndX(500.0f); 
cubicCurve.setEndY(150.0f);

Étape 4: Création d'un objet de groupe

dans le start() , créez un objet de groupe en instanciant la classe nommée Group, qui appartient au package javafx.scene.

Passez l'objet CubicCurve (node) créé à l'étape précédente en tant que paramètre au constructeur de la classe Group afin de l'ajouter au groupe comme suit -

Group root = new Group(cubiccurve);

Étape 5: Création d'un objet de scène

Créez une scène en instanciant la classe nommée Scene qui appartient au package javafx.scene. À cette classe, passez l'objet Group(root) créé à l'étape précédente.

En plus de l'objet racine, vous pouvez également transmettre deux doubles paramètres représentant la hauteur et la largeur de l'écran avec l'objet de la classe Group comme suit.

Scene scene = new Scene(group ,600, 300);

Étape 6: Définition du titre de la scène

Vous pouvez définir le titre de la scène à l'aide du setTitle() méthode de la Stageclasse. leprimaryStage est un objet Stage qui est passé à la méthode start de la classe Scene en tant que paramètre.

En utilisant le primaryStage objet, définissez le titre de la scène comme Sample Application comme suit.

primaryStage.setTitle("Sample Application");

Étape 7: Ajouter une scène à la scène

Vous pouvez ajouter un objet Scene à la scène en utilisant la méthode setScene() de la classe nommée Stage. Ajoutez l'objet Scene préparé aux étapes précédentes à l'aide de cette méthode comme suit.

primaryStage.setScene(scene)

Étape 8: Affichage du contenu de la scène

Affichez le contenu de la scène en utilisant la méthode nommée show() du Stage classe comme suit.

Étape 9: Lancement de l'application

Lancez l'application JavaFX en appelant la méthode statique launch() du Application classe de la méthode principale comme suit.

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

Exemple

Voici un programme qui génère un Bezier CubicCurve en utilisant JavaFX. Enregistrez ce code dans un fichier avec le nomCubicCurveExample.java.

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 
import javafx.scene.shape.CubicCurve; 
         
public class CubicCurveExample extends Application {  
   @Override 
   public void start(Stage stage) { 
      //Drawing a cubic curve 
      CubicCurve cubicCurve = new CubicCurve(); 
       
      //Setting properties to cubic curve
      cubicCurve.setStartX(100.0f); 
      cubicCurve.setStartY(150.0f); 
      cubicCurve.setControlX1(400.0f); 
      cubicCurve.setControlY1(40.0f); 
      cubicCurve.setControlX2(175.0f); 
      cubicCurve.setControlY2(250.0f); 
      cubicCurve.setEndX(500.0f); 
      cubicCurve.setEndY(150.0f);      
         
      //Creating a Group object  
      Group root = new Group(cubicCurve); 
         
      //Creating a scene object 
      Scene scene = new Scene(root, 600, 300);  
      
      //Setting title to the Stage 
      stage.setTitle("Drawing a cubic curve"); 
         
      //Adding scene to the stage
      stage.setScene(scene); 
         
      //Displaying the contents of the stage 
      stage.show(); 
   }      
   public static void main(String args[]){ 
      launch(args); 
   } 
}

Compilez et exécutez le fichier java enregistré à partir de l'invite de commande à l'aide des commandes suivantes.

javac CubicCurveExample.java 
java CubicCurveExample

Lors de l'exécution, le programme ci-dessus génère une fenêtre JavaFX affichant une courbe cubique de Bézier comme illustré ci-dessous.