Velocidade de um objecto em java 3D

Bom dia.

Temos duvida em como reduzir a velocidade de um cilindro. Ele tem que percorrer um caminho e para isso temos coordenadas que definem o seu percurso. Como se apresenta em seguida:

Cylinder c1 = new Cylinder (0.5f, 0.5f);
Point3f[] positions = {new Point3f(3.17f,0.48f,0), new Point3f(2.75f,0.48f,0.0f),
new Point3f(2.33f,0.48f,0.0f), new Point3f(1.91f,0.48f,0.0f), new Point3f(1.49f,0.48f,0.0f),new Point3f(1.07f,0.48f,0.0f),
new Point3f(0.65f,0.48f,0.0f),new Point3f(0.23f,0.48f,0.0f),
new Point3f(0.48f,1.18f,0.0f),
new Point3f(0.48f,1.92f,0.0f), new Point3f(0.48f,2.68f,0.0f), new Point3f(1.22f,2.68f,0.0f),
new Point3f(1.98f,2.68f,0.0f)};

Em seguida temos isto para defenir a velocidade e repartimos o intervalo de knots pelo numero de pontos que temos, o resultado é que o cilindro anda muito rápido, como podemos fazer para reduzir a velocidade?

    float[] knots = {0f, 0.083f, 0.166f, 0.249f, 0.332f, 0.415f, 0.498f, 0.581f, 0.664f, 0.747f, 0.831f, 0.913f,1f};
    Alpha alpha = new Alpha();
    TransformGroup target = new TransformGroup();
    target.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
    target.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
    target.addChild(c1);  
    Transform3D axis = new Transform3D();
    PositionPathInterpolator interpolator = new PositionPathInterpolator(alpha, target, axis, knots, positions);
    interpolator.setSchedulingBounds(bounds);
    tgTransl.addChild(target);
    root.addChild(interpolator);

Os melhores cumprimentos e desde já agradecemos a ajuda

O que você está usando para isso? Quais bibliotecas especificas ou especiais?

Eu não conheço Java3D, mas no OpenGL, no DirectX e em boa parte das engines gráficas, basta usar a física.

Velocidade = aceleração * intervaloTempo;

O seu intervalo de tempo está sendo definido pelo processador do computador e da placa de vídeo que você está usando. Isso é péssimo, seu cilindro está rápido no seu micro, mas pode ser que esteja lento (ou ainda mais rápido) numa outra máquina.

Então, antes de desloca-lo, obtenha a diferença de tempo entre esse loop e o anterior através da função System.currentTimeMillis(). Depois, multiplique essa diferença pelo desclocamento efetivo que você quer por milisegundo.

Assim você terá um movimento uniforme e independente de processador.

Bom dia, obrigada pela ajuda.
Os import’s que estamos a usar são os seguintes

import java.util.Vector;
import javax.vecmath.;
import java.awt.
;
import java.awt.event.;
import java.net.URL;
import javax.media.j3d.
;
import com.sun.j3d.utils.universe.;
import com.sun.j3d.utils.geometry.
;
import com.sun.j3d.utils.image.;
import com.sun.j3d.utils.behaviors.mouse.
;
import com.sun.j3d.utils.behaviors.vp.;
import java.applet.
;
import com.sun.j3d.utils.applet.MainFrame;

Os melhores cumprimentos

Eu não conheço essa classe PositionPathInterpolator
Começei a ver o Java3D a pouco tempo.

Mas procura algo sobre MOVERATE nessa classe, para movimentar mais lento é preciso diminuir esse fator.

Obrigada a todos mais uma vez.
Já consegui resolver o problema. Logo após desenhar o caminho que o cilindro deveria seguir tenho que colocar a seguinte linha de codigo: Alpha alpha = new Alpha(-1,8000); assim o cilindro anda mais devagar.

Os melhores cumprimentos