terça-feira, 31 de julho de 2018

Javafx - desenhando algumas esferas em 3D

Quando queremos desenhar esferas
em javaFx, utilizamos a classe Sphere.
A classe Sphere, define uma esfera 

tridimensional com o tamanho especificado
 pelo programador, que é o nosso caso,
ou pelo usuário quando um programa mais
avançado permite a um usuário criar
seus próprios desenhos em 3D.
Primitivamente, uma esfera é de
geometria 3D criada com um determinado raio.
Aqui está este excelente exemplo
de como desenhar esferas em 3D através
da fenomenal biblioteca javaFx.


Veja abaixo uma imagem do programa em execução:


Veja abaixo o código do programa:


import java.io.FileNotFoundException;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.paint.PhongMaterial;
import javafx.stage.Stage;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.shape.Sphere;

public class PROJETO extends Application {
     Canvas canvas = new Canvas ( 600, 350 );
     GraphicsContext ctx = canvas.getGraphicsContext2D ( );
     Pane root = new Pane ( );
     Scene scene = new Scene ( root );
     final Sphere esfera_azul = new Sphere ( 40 );
     final Sphere esfera_vermelha = new Sphere ( 40 );
     final Sphere esfera_amarela = new Sphere ( 40 );
     final Sphere esfera_verde = new Sphere ( 40 );
     final Sphere esfera_cyan = new Sphere ( 40 );
     final Sphere esfera_rosa = new Sphere ( 40 );
     final PhongMaterial Material_azul = new PhongMaterial ( );
     final PhongMaterial Material_vermelho = new PhongMaterial ( );
     final PhongMaterial Material_amarelo = new PhongMaterial ( );
     final PhongMaterial Material_verde = new PhongMaterial ( );
     final PhongMaterial Material_cyano = new PhongMaterial ( );
     final PhongMaterial Material_rosa = new PhongMaterial ( );
    // /////////////////////////////////////////////////////////////////////////
   public void Informe ( ) {
       ctx.setFont ( Font.font ( "Arial", FontWeight.NORMAL, 13 ) );
       ctx.setFill ( Color.RED );
       ctx.fillText ( "Por: ", 200, 280 );
       ctx.setFill ( Color.BLUE );
       ctx.fillText ( "Samuel Lima", 240, 280 );
       ctx.setFill ( Color.BLACK );
       ctx.fillText ( "sa_sp10@hotmail.com", 200, 295 );
       ctx.setFill ( Color.RED );
       ctx.fillText ( " MUITO OBRIGADO", 245, 320 );
   }
     // /////////////////////////////////////////////////////////////////////////
     public void start ( Stage stage ) throws FileNotFoundException {
         stage.setTitle ( "JAVAFX - DESENHANDO UMA ESFERA EM 3D" );
         // Usando fonte em italic
         ctx.setFont ( Font.font ( "Helvetica", FontWeight.BOLD,
                   FontPosture.ITALIC, 15 ) );
         ctx.setFill ( Color.RED );
         ctx.fillText ( "JAVAFX - DESENHANDO ALGUMAS ESFERAS EM 3D", 125, 35 );
         // Criando uma moldura retangular em canvas
         ctx.setStroke ( Color.GREEN );
         ctx.setLineWidth ( 10.0 );
         ctx.strokeRoundRect ( 10, 10, 580, 330, 10, 10 );
         ctx.setFont ( Font.font ( "Helvetica", FontWeight.BOLD,
                   FontPosture.ITALIC, 12 ) );
         // /////////////////////////////////////////////////////////////////////
         Material_vermelho .setDiffuseColor ( Color.RED );
         Material_vermelho  .setSpecularColor ( Color.LIGHTCORAL );
         esfera_vermelha.setMaterial ( Material_vermelho   );
         // Colunas
         esfera_vermelha.setLayoutX ( 220 );
         // Linhas
         esfera_vermelha.setLayoutY ( 220 );
         // /////////////////////////////////////////////////////////////////////
         Material_azul .setDiffuseColor ( Color.BLUE );
         Material_azul .setSpecularColor ( Color.LIGHTBLUE );
         esfera_azul.setMaterial ( Material_azul  );
         // Colunas
         esfera_azul.setLayoutX ( 300 );
         // Linhas
         esfera_azul.setLayoutY ( 220 );
        // /////////////////////////////////////////////////////////////////////
         Material_amarelo.setDiffuseColor ( Color.YELLOW );
         Material_amarelo  .setSpecularColor ( Color.LIGHTYELLOW );
         esfera_amarela.setMaterial ( Material_amarelo   );
         // Colunas
         esfera_amarela.setLayoutX ( 380 );
         // Linhas
         esfera_amarela.setLayoutY ( 220 );
         // /////////////////////////////////////////////////////////////////////
         Material_verde.setDiffuseColor ( Color.GREEN );
         Material_verde.setSpecularColor ( Color.LIGHTGREEN );
         esfera_verde.setMaterial ( Material_verde   );
         // Colunas
         esfera_verde.setLayoutX ( 260 );
         // Linhas
         esfera_verde.setLayoutY ( 152 );
         // /////////////////////////////////////////////////////////////////////
         Material_cyano.setDiffuseColor ( Color.CYAN );
         Material_cyano.setSpecularColor ( Color.LIGHTCYAN );
         esfera_cyan.setMaterial ( Material_cyano   );
         // Colunas
         esfera_cyan.setLayoutX ( 340 );
         // Linhas
         esfera_cyan.setLayoutY ( 152 );
         // /////////////////////////////////////////////////////////////////////
         Material_rosa.setDiffuseColor ( Color.PINK );
         Material_rosa.setSpecularColor ( Color.LIGHTPINK );
         esfera_rosa.setMaterial ( Material_rosa   );
         // Colunas
         esfera_rosa.setLayoutX ( 300 );
         // Linhas
         esfera_rosa.setLayoutY ( 83 );
         // /////////////////////////////////////////////////////////////////////
         Informe ( );
         root.getChildren ( ).addAll ( canvas, esfera_azul, esfera_vermelha,
                   esfera_amarela, esfera_verde, esfera_cyan, esfera_rosa );
         stage.setScene ( scene );
         stage.show ( );
     }
     // /////////////////////////////////////////////////////////////////////////
     public static void main ( String [ ] args ) {
         Application.launch ( args );
     }
}