| | |
| | | using DevExpress.CodeParser; |
| | | using DevExpress.XtraCharts.Native; |
| | | using Yw.Untity; |
| | | using Yw.Untity; |
| | | |
| | | namespace Yw.WinFrmUI.HydroL3d |
| | | { |
| | |
| | | |
| | | // 创建透视投影变换 |
| | | gl.Perspective(_paras.Perspective.Fovy, _paras.Perspective.Aspect, _paras.Perspective.Near, _paras.Perspective.Far); |
| | | //gl.LoadIdentity(); |
| | | //gl.Ortho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); |
| | | |
| | | gl.LookAt(_paras.LookAt.Eye.X, _paras.LookAt.Eye.Y, _paras.LookAt.Eye.Z, |
| | | _paras.LookAt.Center.X, _paras.LookAt.Center.Y, _paras.LookAt.Center.Z, |
| | | _paras.LookAt.Up.X, _paras.LookAt.Up.Y, _paras.LookAt.Up.Z); |
| | | |
| | | // 设置当前矩阵为模型视图矩阵 |
| | | gl.MatrixMode(OpenGL.GL_MODELVIEW); |
| | | |
| | | //重置当前指定的矩阵为单位矩阵,将当前的用户坐标系的原点移到了屏幕中心 |
| | | gl.LoadIdentity(); |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | //平移 |
| | | gl.Translate(_paras.Translation.X, _paras.Translation.Y, _paras.Translation.Z); |
| | |
| | | |
| | | _network.Draw(gl); |
| | | |
| | | gl.LookAt(_paras.LookAt.Eye.X, _paras.LookAt.Eye.Y, _paras.LookAt.Eye.Z, |
| | | _paras.LookAt.Center.X, _paras.LookAt.Center.Y, _paras.LookAt.Center.Z, |
| | | _paras.LookAt.Up.X, _paras.LookAt.Up.Y, _paras.LookAt.Up.Z); |
| | | //float[] minCorner = { _paras.BoundingBox.Min.X, _paras.BoundingBox.Min.Y, _paras.BoundingBox.Min.Z }; |
| | | //float[] maxCorner = { _paras.BoundingBox.Max.X, _paras.BoundingBox.Max.Y, _paras.BoundingBox.Max.Z }; |
| | | |
| | | //gl.Begin(OpenGL.GL_POINT); |
| | | //gl.Vertex(minCorner[0], minCorner[1], minCorner[2]); |
| | | //gl.End(); |
| | | |
| | | //gl.Begin(OpenGL.GL_POINT); |
| | | //gl.Vertex(maxCorner[0], maxCorner[1], maxCorner[2]); |
| | | //gl.End(); |
| | | |
| | | //gl.Begin(OpenGL.GL_LINE_LOOP); |
| | | //// 绘制底面 |
| | | //gl.Vertex(minCorner[0], minCorner[1], minCorner[2]); |
| | | //gl.Vertex(maxCorner[0], minCorner[1], minCorner[2]); |
| | | //gl.Vertex(maxCorner[0], maxCorner[1], minCorner[2]); |
| | | //gl.Vertex(minCorner[0], maxCorner[1], minCorner[2]); |
| | | |
| | | //// 绘制顶面 |
| | | //gl.Vertex(minCorner[0], minCorner[1], maxCorner[2]); |
| | | //gl.Vertex(maxCorner[0], minCorner[1], maxCorner[2]); |
| | | //gl.Vertex(maxCorner[0], maxCorner[1], maxCorner[2]); |
| | | //gl.Vertex(minCorner[0], maxCorner[1], maxCorner[2]); |
| | | |
| | | //// 连接底面和顶面的边 |
| | | //gl.Vertex(minCorner[0], minCorner[1], minCorner[2]); |
| | | //gl.Vertex(minCorner[0], minCorner[1], maxCorner[2]); |
| | | //gl.Vertex(maxCorner[0], minCorner[1], minCorner[2]); |
| | | //gl.Vertex(maxCorner[0], minCorner[1], maxCorner[2]); |
| | | //gl.Vertex(maxCorner[0], maxCorner[1], minCorner[2]); |
| | | //gl.Vertex(maxCorner[0], maxCorner[1], maxCorner[2]); |
| | | //gl.Vertex(minCorner[0], maxCorner[1], minCorner[2]); |
| | | //gl.Vertex(minCorner[0], maxCorner[1], maxCorner[2]); |
| | | //gl.End(); |
| | | |
| | | gl.Flush(); //强制刷新 |
| | | |
| | |
| | | int deltaX = e.X - _mouseLeftDownRotatePoint.X; |
| | | int deltaY = e.Y - _mouseLeftDownRotatePoint.Y; |
| | | |
| | | _rotationX += deltaY * 0.05f; |
| | | _rotationY += deltaX * 0.05f; |
| | | _rotationX += deltaY * 0.1f; |
| | | _rotationY += deltaX * 0.1f; |
| | | |
| | | _mouseLeftDownRotatePoint = e.Location; |
| | | return true; |
| | |
| | | { |
| | | this.openGLControl1.Invalidate(); |
| | | } |
| | | |
| | | } |
| | | |
| | | private void openGLControl1_MouseUp(object sender, MouseEventArgs e) |
| | |
| | | return; |
| | | } |
| | | var pt = this.openGLControl1.PointToClient(MousePosition); |
| | | var list = this.openGLControl1.OpenGL.UnProject(pt.X, pt.Y, 0); |
| | | var list = this.openGLControl1.OpenGL.UnProject(pt.X, this.openGLControl1.Height - pt.Y, 0); |
| | | var wpt = new Point3d(list[0], list[1], list[2]); |
| | | _network.Hover(wpt); |
| | | var list1 = _network.Hover(wpt); |
| | | if (list1 != null && list1.Count > 0) |
| | | { |
| | | |
| | | } |
| | | } |
| | | |
| | | private void openGLControl1_MouseDoubleClick(object sender, MouseEventArgs e) |