Point3D v1n = v1.normalize();
double alpha = Math.acos(viewer.normalize().skalarproduct(v1n));
Point3D r = (v2.minus(v1)).crossproduct(v2);
float matrix[] = new float[16];
Quaternion quat = new Quaternion();
Point3D norm = r.normalize();
quat.createFromAxisAngle((float) norm.x, (float) norm.y, (float) norm.z, (float) alpha);
quat.createMatrix(matrix);
Matrix mMatrix = new Matrix(matrix);
direction = mMatrix.multvector(direction);
up = mMatrix.multvector(up);
}