It's to be expected that repeated matrix multiplications will sooner
or later produce
computation errors when those multiplications are applied to Matrix{3,4}{d,f}.
I have a small demo program that shows that this happens fairly rapidly
when doing
the following:
void valuator1_AdjustmentValueChanged(java.awt.event.AdjustmentEvent
event)
{
//valuator1 sets values from 0 to 359 degrees and that is converted
to radians -- I think.
valuatorCanvas1.repaint();}
int value = event.getValue();
double radians = (Math.PI / 180.0) * (double)value;
System.out.println("Radians = " + radians);
sceneGraph.setTransform3DRotX(radians);
//lastrx holds the previous rotation in radians. The difference between
//the last value and the current value of rx is the new angle of rotation.
//this works fine for a while. Then computation errors crop up.
private double lastrx = 0.0;
public void setTransform3DRotX(double rx)
{
Transform3D t = new Transform3D();}
Matrix3d rotmat = new Matrix3d();
t.rotX(rx - lastrx);
lastrx = rx;
objTG.getTransform(objTrans);
objTrans.mul(t,objTrans);
objTG.setTransform(objTrans);
Doing the above operation repeatedly on all axies will soon produce
errors in objTrans that
show when the rotation of objTrans is set to [0.0, 0.0, 0.0].
If anyone is interested in seeing this demo, email me and I'll send you a zip with source.
Ken Warner
