private void RenderAxisRotating(Viewport3D viewport, Document document) { var axis = Vector3.UnitX; var c = Color.Red; if (_mouseDown == CircleType.Y) { axis = Vector3.UnitY; c = Color.Lime; } if (_mouseDown == CircleType.Z) { axis = Vector3.UnitZ; c = Color.Blue; } if (_mouseDown == CircleType.Outer) { var vp3 = _activeViewport as Viewport3D; if (vp3 != null) { axis = (vp3.Camera.LookAt - vp3.Camera.Location).Normalized(); } c = Color.White; } if (_activeViewport != viewport || _mouseDown != CircleType.Outer) { GL.Begin(PrimitiveType.Lines); var zero = new Vector3((float)_pivotPoint.DX, (float)_pivotPoint.DY, (float)_pivotPoint.DZ); GL.Color4(c); GL.Vertex3(zero - axis * 100000); GL.Vertex3(zero + axis * 100000); GL.End(); } if (_activeViewport == viewport) { GL.Disable(EnableCap.DepthTest); GL.Enable(EnableCap.LineStipple); GL.LineStipple(5, 0xAAAA); GL.Begin(PrimitiveType.Lines); GL.Color4(Color.FromArgb(64, Color.Gray)); GL.Vertex3(_pivotPoint.ToVector3()); GL.Vertex3(viewport.ScreenToWorld(_mouseDownPoint).ToVector3()); GL.Color4(Color.LightGray); GL.Vertex3(_pivotPoint.ToVector3()); GL.Vertex3(viewport.ScreenToWorld(_mouseMovePoint).ToVector3()); GL.End(); GL.Disable(EnableCap.LineStipple); GL.Enable(EnableCap.DepthTest); } }