JavaFX - Curva cuádruple de formas 2D
Matemáticamente, una curva cuadrática es aquella que se describe mediante una función cuadrática como - y = ax 2 + bx + c.
En gráficos por computadora se utilizan curvas de Bézier. Estas son curvas paramétricas que parecen razonablemente suaves en todas las escalas. Estas curvas de Bézier se dibujan basándose en puntos en un plano XY.
Una curva cuadrática es una curva paramétrica de Bezier en el plano XY que es una curva de grado 2. Se dibuja utilizando tres puntos: start point, end point y control point como se muestra en el siguiente diagrama
En JavaFX, una QuadCurve está representada por una clase llamada QuadCurve. Esta clase pertenece al paquetejavafx.scene.shape.
Al crear una instancia de esta clase, puede crear un nodo QuadCurve en JavaFX.
Esta clase tiene 6 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.
controlX - La coordenada x del punto de control de la curva.
controlY - La coordenada y del 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 QuadCurve, debe pasar valores a estas propiedades. Esto se puede hacer pasándolos al constructor de esta clase, en el mismo orden, en el momento de la instanciación, de la siguiente manera:
QuadCurve quadcurve = new QuadCurve(startX, startY, controlX, controlY, endX, endY);
O, utilizando sus respectivos métodos de establecimiento de la siguiente manera:
setStartX(value);
setStartY(value);
setControlX(value);
setControlY(value);
setEndX(value);
setEndY(value);
Pasos para dibujar Quadcurve
Para dibujar una curva cuadrilátera 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. Entonces puede implementar elstart() 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 QuadCurve
Puede crear una QuadCurve en JavaFX creando una instancia de la clase llamada QuadCurve que pertenece a un paquete javafx.scene.shape. A continuación, puede crear una instancia de esta clase como se muestra en el siguiente bloque de código.
//Creating an object of the class QuadCurve
QuadCurve quadcurve = new QuadCurve();
Paso 3: Establecer propiedades en QuadCurve
Especifique las coordenadas x, y de los tres puntos: punto inicial, punto final y puntos de control, de la curva requerida, utilizando sus respectivos métodos de establecimiento como se muestra en el siguiente bloque de código.
//Adding properties to the Quad Curve
quadCurve.setStartX(100.0);
quadCurve.setStartY(220.0f);
quadCurve.setEndX(500.0f);
quadCurve.setEndY(220.0f);
quadCurve.setControlX(250.0f);
quadCurve.setControlY(0.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 QuadCurve (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(quadcurve);
Paso 5: creación de un objeto de escena
Cree una escena creando una instancia de la clase llamada Sceneque 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 de la clase Stage. 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 denominada Stage. Agregue el objeto Scene preparado en el anteriorsteps 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.
primaryStage.show();
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 una curva cuadrilátera usando JavaFX. Guarde este código en un archivo con el nombreQuadCurveExample.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.shape.QuadCurve;
public class QuadCurveExample extends Application {
@Override
public void start(Stage stage) {
//Creating a QuadCurve
QuadCurve quadCurve = new QuadCurve();
//Adding properties to the Quad Curve
quadCurve.setStartX(100.0);
quadCurve.setStartY(220.0f);
quadCurve.setEndX(500.0f);
quadCurve.setEndY(220.0f);
quadCurve.setControlX(250.0f);
quadCurve.setControlY(0.0f);
//Creating a Group object
Group root = new Group(quadCurve);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Drawing a Quad 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 QuadCurveExample.java
java QuadCurveExample
Al ejecutarse, el programa anterior genera una ventana JavaFX que muestra una curva cuadrilátera de Bezier como se muestra en la siguiente captura de pantalla.