public override Point World2Screen(ILPoint3Df world, double[] modelview) { Vector3 w = new Vector3(world.X, world.Y, world.Z); Vector3 screen; Glu.Project(w, modelview, m_projMatrix, m_viewMatrix, out screen); return(new Point((int)screen.X, (int)(ClientSize.Height - screen.Y))); }
/// <summary> /// Transform 2 world coordinates into screen coords under current matrices /// </summary> /// <param name="p1_3D">world coord point 1</param> /// <param name="p2_3D">world coord point 2</param> /// <param name="p1_2D">(output) screen coord point 1</param> /// <param name="p2_2D">(output) screen coord point 2</param> public override void World2Screen(ILPoint3Df p1_3D, ILPoint3Df p2_3D, out Point p1_2D, out Point p2_2D) { Vector3 s = new Vector3(); Vector3 e = new Vector3(); Glu.Project(new Vector3(p1_3D.X, p1_3D.Y, p1_3D.Z), m_modelViewMatrix, m_projMatrix, m_viewMatrix, out s); Glu.Project(new Vector3(p2_3D.X, p2_3D.Y, p2_3D.Z), m_modelViewMatrix, m_projMatrix, m_viewMatrix, out e); p1_2D = new Point((int)s.X, (int)(ClientSize.Height - s.Y)); p2_2D = new Point((int)e.X, (int)(ClientSize.Height - e.Y)); }