Usuario:


Panel General y Elementos

Storyboard

>Modelo

ID:(1080, 0)



OSP Movimiento de Figuras 3D, pelota en lo alto

Imagen

>Top


DrawingPanel3D

ID:(2431, 0)



OSP Movimiento de Figuras 3D, pelota por impactar

Imagen

>Top


Agregar Elementos - una esfera

ID:(2432, 0)



OSP Moviomeinto de Figuras 3D

Descripción

>Top


En el caso de la pelota que rebota se puede emplear el código:

```

/**

* www.opensourcephysics.org/

* @author Wolfgang Christian

*/

import org.opensourcephysics.controls.AbstractSimulation;

import org.opensourcephysics.display3d.simple3d.*;

public class BounceApp extends AbstractSimulation {

DrawingPanel3D panel = new DrawingPanel3D();

DrawingFrame3D frame = new DrawingFrame3D(panel);

Element ball = new ElementEllipsoid();

Element floor = new ElementBox();

double velocity = 0;

public BounceApp() {

panel.setPreferredMinMax(-5, 5, -5, 5, 0, 10);

ball.setXYZ(0.0, 0.0, 9.0);

ball.setSizeXYZ(2, 2, 2);

ball.getStyle().setFillColor(java.awt.Color.YELLOW);

// floor

floor.setXYZ(0.0, 0.0, 0.0);

floor.setSizeXYZ(5.0, 5.0, 1.0);

// Add the objects to panel

panel.addElement(ball);

panel.addElement(floor);

frame.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

protected void doStep() {

double z = ball.getZ(), dt = 0.05;

z += velocity*dt; // moves the ball

velocity -= 9.8*dt; // acceleration changes the velocity

if(z<=1.0&&velocity<0) {

velocity = -velocity;

}

ball.setZ(z);

}

public static void main(String[] args) {

(new BounceApp()).startSimulation();

}

}

```

ID:(8764, 0)



Agregar Elementos - una plano

Descripción

>Top


El suelo lo podemos definir con una box:

```

Element floor = new ElementBox();

```

que se debe de ubicar en el volumen:

```

floor.setXYZ(0.0, 0.0, 0.0);

```

y dar tamaño:

```

floor.setSizeXYZ(5.0, 5.0, 1.0);

```

y finalmente se debe de asociar al panel:

```

panel.addElement(floor);

```

ID:(1229, 0)



Animación

Descripción

>Top


Para simular el movimiento de la pelota debemos primero cargar la posición, calcula el desplazamiento, corrige la velocidad, asegura que inicie la caída y mueve la pelota:

```

double z = ball.getZ();

z += velocity*dt;

velocity -= 9.8*dt;

if(z <= 1.0 && velocity<0){

velocity = -velocity;

}

ball.setZ(z);

```

ID:(1230, 0)