JavaFX - CubicCurve de formas 2D

Una Curva Cúbica se describe mediante una función polinomial de tercer grado de dos variables y se puede escribir de la siguiente forma:

Estas curvas de Bézier se utilizan generalmente en gráficos por computadora. Son curvas paramétricas que parecen razonablemente suaves en todas las escalas. Estas curvas se dibujan basándose en puntos en el plano XY.

Una curva cúbica es una curva paramétrica de Bezier en el plano XY es una curva de grado 3. Se dibuja utilizando cuatro puntos: Start Point, End Point, Control Point and Control Point2 como se muestra en el siguiente diagrama.

En JavaFX, una CubicCurve está representada por una clase llamada CubicCurve. Esta clase pertenece al paquetejavafx.scene.shape.

Al crear una instancia de esta clase, puede crear un nodo CubicCurve en JavaFX.

Esta clase tiene 8 propiedades del tipo de datos doble, a saber:

  • startX - La coordenada x del punto inicial de la curva.

  • startY - La coordenada y del punto inicial de la curva.

  • controlX1 - La coordenada x del primer punto de control de la curva.

  • controlY1 - La coordenada y del primer punto de control de la curva.

  • controlX2 - La coordenada x del segundo punto de control de la curva.

  • controlY2 - La coordenada y del segundo punto de control de la curva.

  • endX - La coordenada x del punto final de la curva.

  • endY - La coordenada y del punto final de la curva.

Para dibujar una curva cúbica, debe pasar valores a estas propiedades, ya sea pasándolos al constructor de esta clase, en el mismo orden, en el momento de la instanciación, como se muestra a continuación:

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

O, utilizando sus respectivos métodos de establecimiento de la siguiente manera:

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

Pasos para dibujar CubicCurve

Para dibujar una curva cúbica de Bezier en JavaFX, siga los pasos que se indican a continuación.

Paso 1: crear una clase

Cree una clase Java y herede la Application clase del paquete javafx.application e implementar el start() método de esta clase de la siguiente manera.

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

Paso 2: Crear una Curva Cúbica

Puede crear una CubicCurve en JavaFX creando una instancia de la clase llamada CubicCurve que pertenece a un paquete javafx.scene.shape. Puede crear una instancia de esta clase de la siguiente manera.

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

Paso 3: Establecer propiedades para CubicCurve

Especifique las coordenadas x, y de los cuatro puntos: start point, end point, control point1 y control point2 de la curva requerida, utilizando sus respectivos métodos de establecimiento como se muestra en el siguiente bloque de código.

//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);

Paso 4: crear un objeto de grupo

En el start() método, cree un objeto de grupo instanciando la clase llamada Group, que pertenece al paquete javafx.scene.

Pase el objeto CubicCurve (nodo) creado en el paso anterior como parámetro al constructor de la clase Group para agregarlo al grupo de la siguiente manera:

Group root = new Group(cubiccurve);

Paso 5: creación de un objeto de escena

Cree una escena creando una instancia de la clase llamada Scene que pertenece al paquete javafx.scene. A esta clase, pase el objeto Grupo(root) creado en el paso anterior.

Además del objeto raíz, también puede pasar dos parámetros dobles que representan la altura y el ancho de la pantalla junto con el objeto de la clase Group de la siguiente manera.

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

Paso 6: Establecer el título del escenario

Puede establecer el título del escenario utilizando el setTitle() método del Stageclase. losprimaryStage es un objeto Stage que se pasa al método de inicio de la clase de escena como parámetro.

Utilizando el primaryStage objeto, establezca el título de la escena como Sample Application como sigue.

primaryStage.setTitle("Sample Application");

Paso 7: agregar escena al escenario

Puede agregar un objeto de escena al escenario usando el método setScene() de la clase nombrada Stage. Agregue el objeto Scene preparado en los pasos anteriores utilizando este método de la siguiente manera.

primaryStage.setScene(scene)

Paso 8: Visualización del contenido del escenario

Muestre el contenido de la escena usando el método llamado show() del Stage clase de la siguiente manera.

Paso 9: lanzamiento de la aplicación

Inicie la aplicación JavaFX llamando al método estático launch() del Application class del método principal de la siguiente manera.

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

Ejemplo

A continuación se muestra un programa que genera un Bezier CubicCurve usando JavaFX. Guarde este código en un archivo con el nombreCubicCurveExample.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); 
   } 
}

Compile y ejecute el archivo java guardado desde el símbolo del sistema utilizando los siguientes comandos.

javac CubicCurveExample.java 
java CubicCurveExample

Al ejecutarse, el programa anterior genera una ventana JavaFX que muestra una curva cúbica de Bezier como se muestra a continuación.