Home

Miguel Alejan. Moreno Barrientos

Ejemplo con vectores

En este ejemplo se muestran algunas coordenadas de una circunferencia usando su ecuación vectorial:

package jme;

import java.text.DecimalFormat;

import jme.excepciones.ExpresionException;
import jme.terminales.RealDoble;
import jme.terminales.Vector;

/**
 *  Obtener los puntos de una circunferencia de 
 *  forma paramétrica usando JME.
 *  
 *  Se usará la expresión [a,b]+r[cos(t),sin(t)].
 *  Alternativamente [a+r*cos(t),b+r*sin(t)].
 */
public class Circunferencia 
{
    public static void main( String[] args )
    {
        try
        {
            // Establecer expresión y constantes
            Expresion paramCirc = new Expresion( "[a,b]+r[cos(t),sin(t)]" );  // forma paramétrica de una circunferencia centrada en (a,b) de radio 'r'
            paramCirc.setConstante( "a", 3 ).setConstante( "b", 1 );  // se establece el centro de la circunferencia
            paramCirc.setConstante( "r", 2 );  // se establece el radio (se pueden establecer las constantes en una línea, o usando varias)

            // iterar sobre variable paramétrica 't' desde 0 a 2pi
            DecimalFormat df = new DecimalFormat( "0.000" );
            for ( double t = 0; t < 2 * Math.PI; t += 0.1 )
            {
                paramCirc.setVariable( "t", t );
                Vector resultado = (Vector) paramCirc.evaluar();  // el resultado será un vector bidimensional (x,y). Se puede comprobar con 'isVector'

                double x = ( (RealDoble) resultado.getComponente( 0 ) ).doble();
                double y = ( (RealDoble) resultado.getComponente( 1 ) ).doble();
                System.out.println( "t(" + df.format( t ) + ") -> (" + df.format( x ) + "," + df.format( y ) + ")"  );
            }
        }
        catch ( ExpresionException e )
        {
            System.err.println( e.getMessage() );
        }
    }
}

Output:
t(0,000) -> (5,000,1,000)
t(0,100) -> (4,990,1,200)
t(0,200) -> (4,960,1,397)
t(0,300) -> (4,911,1,591)
t(0,400) -> (4,842,1,779)
t(0,500) -> (4,755,1,959)
t(0,600) -> (4,651,2,129)
t(0,700) -> (4,530,2,288)
t(0,800) -> (4,393,2,435)
t(0,900) -> (4,243,2,567)

...

Project Members: