Hi,
Im drawing a coordinate system in my viewport.
Everything is fine, until I change my view direction (ex. from top view to front view).
When I change my view direction, my bitmapped letters (X, y & Z) are misplacing.
Could anybody help me pls..
private void MakeCoordinateSystem()
{
double basedia = 0.0004;
double dd = Math.Min(CurrentViewPortData.clipX, CurrentViewPortData.clipY) / 5.0;
RemoveModelViewMatrixTranslation();
double[] m = new double[16];
gl.GetDoublev(gl.MODELVIEW_MATRIX, m);
gl.LoadIdentity();
gl.Translated(CurrentViewPortData.clipX - dd * 0.8, CurrentViewPortData.clipY - dd * 0.8, CurrentViewPortData.sphereRadius * 49.0);
gl.MultMatrixd(m);
IntPtr Qobj = glu.NewQuadric();
gl.Color3f(0.0f, 0.0f, 0.0f);
glu.Sphere(Qobj, basedia * 1.5 * dd * 100.0, 10, 10);
gl.Color3f(1.0f, 0.0f, 0.0f);
gl.Rotatef(90.0f, 0.0f, 1.0f, 0.0f);
glu.Cylinder(Qobj, basedia * dd * 100.0, basedia * dd * 100.0, basedia * 10.0 * dd * 100.0, 10, 10);
gl.Translated(0.0f, 0.0f, basedia * 10.0 * dd * 100.0);
gl.Rotatef(180.0f, 0.0f, 1.0f, 0.0f);
glu.Disk(Qobj, 0.0, basedia * dd * 100.0 * 2.0f, 10, 5);
gl.Rotatef(-180.0f, 0.0f, 1.0f, 0.0f);
glu.Cylinder(Qobj, basedia * 2.0 * dd * 100.0, 0.0, basedia * 3.0 * dd * 100.0, 10, 10);
double[] xLocation = new double[3] { 0.0, -basedia * 1.5 * dd * 100.0, basedia * 4.0 * dd * 100.0 };
double[] yLocation = new double[3] { -basedia * 1.5 * dd * 100.0, 0.0, basedia * 4.0 * dd * 100.0 };
double[] zLocation = new double[3] { -basedia * dd * 100.0, -basedia * 1.5 * dd * 100.0, basedia * 4.5 * dd * 100.0 };
byte[] xraster = new byte[] {
0xc1, 0x80,
0xc1, 0x80,
0xc1, 0x80,
0xc1, 0x80,
0x63, 0x00,
0x63, 0x00,
0x36, 0x00,
0x36, 0x00,
0x1c, 0x00,
0x1c, 0x00,
0x36, 0x00,
0x36, 0x00,
0x63, 0x00,
0x63, 0x00,
0xc1, 0x80,
0xc1, 0x80,
0xc1, 0x80,
0xc1, 0x80
};
gl.RasterPos3dv(xLocation);
gl.PushMatrix();
gl.Bitmap(9, 18, 0.0f, 0.0f, 0.0f, 0.0f, xraster);
gl.PopMatrix();
gl.Translated(0.0f, 0.0f, -basedia * 10.0 * dd * 100.0);
gl.Color3f(0.0f, 1.0f, 0.0f);
gl.Rotatef(-90.0f, 0.0f, 1.0f, 0.0f);
gl.Rotatef(-90.0f, 1.0f, 0.0f, 0.0f);
glu.Cylinder(Qobj, basedia * dd * 100.0, basedia * dd * 100.0, basedia * 10.0 * dd * 100.0, 10, 10);
gl.Translated(0.0f, 0.0f, basedia * 10.0 * dd * 100.0);
gl.Rotatef(180.0f, 1.0f, 0.0f, 0.0f);
glu.Disk(Qobj, 0.0, basedia * dd * 100.0 * 2.0f, 10, 5);
gl.Rotatef(-180.0f, 1.0f, 0.0f, 0.0f);
glu.Cylinder(Qobj, basedia * 2.0 * dd * 100.0, 0.0, basedia * 3.0 * dd * 100.0, 10, 10);
gl.RasterPos3dv(yLocation);
byte[] yraster = new byte[] { 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00,
0x14,0x00, 0x36,0x00, 0x36,0x00, 0x63,0x00,0x63,0x00, 0xc1,0x80, 0xc1, 0x80};
gl.PushMatrix();
gl.Bitmap(9, 18, 0.0f, 0.0f, 0.0f, 0.0f, yraster);
gl.PopMatrix();
gl.Translated(0.0f, 0.0f, -basedia * 10.0 * dd * 100.0);
gl.Color3f(0.0f, 0.0f, 1.0f);
gl.Rotatef(-90.0f, 1.0f, 0.0f, 0.0f);
gl.Rotatef(180.0f, 0.0f, 1.0f, 0.0f);
glu.Cylinder(Qobj, basedia * dd * 100.0, basedia * dd * 100.0, basedia * 10.0 * dd * 100.0, 10, 10);
gl.Translated(0.0f, 0.0f, basedia * 10.0 * dd * 100.0);
gl.Rotatef(180.0f, 1.0f, 0.0f, 0.0f);
glu.Disk(Qobj, 0.0, basedia * dd * 100.0 * 2.0f, 10, 5);
gl.Rotatef(-180.0f, 1.0f, 0.0f, 0.0f);
glu.Cylinder(Qobj, basedia * 2.0 * dd * 100.0, 0.0, basedia * 3.0 * dd * 100.0, 10, 10);
gl.Rotatef(180.0f, 0.0f, 0.0f, 1.0f);
zLocation[0] = 0.0;
zLocation[1] = -basedia * 4.0 * dd * 100.0 * .5;
zLocation[2] = basedia * 6.0 * dd * 100.0 * .866;
gl.RasterPos3dv(zLocation);
byte[] zraster = new byte[] {
0xfe, 0x00,
0xfe, 0x00,
0xfe, 0x00,
0xc0, 0x00,
0xc0, 0x00,
0x60, 0x00,
0x60, 0x00,
0x30, 0x00,
0x30, 0x00,
0x18, 0x00,
0x18, 0x00,
0x0c, 0x00,
0x0c, 0x00,
0x06, 0x00,
0x06, 0x00,
0xfe, 0x00,
0xfe, 0x00,
0xfe, 0x00,
0xfe, 0x00
};
gl.PushMatrix();
gl.Bitmap(9, 18, 0.0f, 0.0f, 0.0f, 0.0f, zraster);
gl.PopMatrix();
gl.Color3f(0.0f, 0.0f, 0.0f);
}