Thank you very much for the answer.
But i have still the following problem:

I have 2 Points given and i have to draw an arrow between point1 to point2.
So i have tried to solve my problem with the lookAt method.
But it seems that i haven't implemented my arrow in a right way.

My sample code:


private Transform3D calculateRotationTransform3D(Vector3d source, Vector3d
target){
 // source position
 double x1 = source.x;
 double y1 = source.y;
 double z1 = source.z;
 // target position
 double x2 = target.x;
 double y2 = target.y;
 double z2 = target.z;
 // arrow length
 double len = Math.sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) + (z1-z2)*(z1-z2));


 //middle of the two positions ( = position of arrow)
 double x_middle = (x1+x2)/2;
 double y_middle = (y1+y2)/2;
 double z_middle = (z1+z2)/2;
 //
 Point3d eye = new Point3d(x_middle, y_middle, z_middle);

 // calculate temp normal vector (cross product)<-- i dont know if this is right
 Vector3d vec1 = new Vector3d(x1-x2, y1-y2, z1-z2);
 Vector3d vec2 = new Vector3d(x1-x2, y1-y2, z1-z2-1.0); <-- ?? right?
 Vector3d normalVec = new Vector3d();
 normalVec.cross(vec1, vec2);

 Vector3d temp = new Vector3d(normalVec);
 temp.normalize();
 temp.scale(len/2.0d);

 Vector3d centerVec = new Vector3d();
 centerVec.add(new Vector3d(x_middle, y_middle, z_middle));
 //centerVec.add(temp);
 normalVec.negate();
 centerVec.add(normalVec);
 Point3d center = new Point3d(centerVec.x, centerVec.y, centerVec.z);


 // Vector3d v1 = new Vector3d(x1-x2, y1-y2, z1-z2);
 Vector3d v1 = new Vector3d(x_middle-normalVec.x, y_middle-normalVec.y,
z_middle-normalVec.z);
 Vector3d v2 = new Vector3d(x_middle-normalVec.x, y_middle-normalVec.y,
z_middle-normalVec.z-1.0d);
 Vector3d normal = new Vector3d();
 normal.cross(v1, v2);


 Transform3D rot = new Transform3D();
 rot.lookAt(eye, center, normal);
 rot.invert();

 return rot;
    }

the call:
.
.
.
Transform3D caTransform = calculateRotationTransform3D(stPt, endPt);
TransformGroup caTransformGroup = new TransformGroup(caTransform);

Node cArrowCylinder = new Cylinder((float)ArrowDia, (float)CylenderLen,
caAppearance);
Transform3D caTransform = calculateRotationTransform3D(stPt, endPt);
TransformGroup caTransformGroup = new TransformGroup(caTransform);
.
.
.
Node cArrowCylinder = new Cylinder((float)ArrowDia, (float)CylenderLen,
caAppearance);

I would appreciate if you can verify or correct this code

Greets,
Horst Sueggel

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA3D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to