i made a pointAt in gl back in the days like this. not sure

if anyone want it

Here it is:

// returns the distance between two 3d points in space.

public static float getDistance(Vector4 pnt1, Vector4 pnt2) {

double dx = pnt2.x - pnt1.x;

double dy = pnt2.y - pnt1.y;

double dz = pnt2.z - pnt1.z;

return((float)Math.sqrt(dx*dx + dy*dy + dz*dz));

}

// convert x, y location to an angle - azimuth

public static float getAzimuth(Vector4 pnt1, Vector4 pnt2) {

float x = -(pnt1.x - pnt2.x);

float z = -(pnt1.z - pnt2.z);

float rangle = (float)(Math.atan2(x, z));

return(180.0f * rangle / 3.14159f);

}

// convert x, y, z location to an angle - elevation

public static float getElevation(Vector4 pnt1, Vector4 pnt2) {

float y = (pnt1.y - pnt2.y);

float x = (pnt1.x - pnt2.x);

float z = (pnt1.z - pnt2.z);

float d = (float)Math.sqrt(z*z + x*x);

if(d == 0) d = 0.0001f; // just in case we get a zero distance

float ang = (float)Math.atan(y / d);

return((float)Math.toDegrees(ang));

}

If u want the gl bit:

Vector4 v1 = new Vector4(0f, 0f, 0f);

Vector4 v2 = new Vector4(10f, 5f, -20); // whatever.

float azimuth = Utils.getAzimuth(v1, v2);

float elevation = Utils.getElevation(v1, v2);

float distance = Utils.getDistanceZX(v1, v2);

gl.glRotatef(azimuth, 0f, 1f, 0f);

gl.glRotatef(elevation, 1f, 0f, 0f);

would be cool to have one in Xith3d

part of transform3d or transformGroup maybe?