From 5610ef481946ff15d856f65e08b3f25aeaf3e269 Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期二, 24 九月 2024 10:54:15 +0800 Subject: [PATCH] 新增曲线设置界面 --- WinFrmUI/Yw.WinFrmUI.Hydro.L3d.Core/02-panel/NetworkPanelDebug.cs | 68 ++++++++++++++++++++++++++++----- 1 files changed, 57 insertions(+), 11 deletions(-) diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.L3d.Core/02-panel/NetworkPanelDebug.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.L3d.Core/02-panel/NetworkPanelDebug.cs index 395a117..d5c22cc 100644 --- a/WinFrmUI/Yw.WinFrmUI.Hydro.L3d.Core/02-panel/NetworkPanelDebug.cs +++ b/WinFrmUI/Yw.WinFrmUI.Hydro.L3d.Core/02-panel/NetworkPanelDebug.cs @@ -1,4 +1,5 @@ 锘縰sing DevExpress.Mvvm.Native; +using DevExpress.XtraCharts.GLGraphics; using SharpGL; namespace Yw.WinFrmUI.HydroL3d @@ -53,36 +54,81 @@ { return; } - SharpGL.OpenGL gl = this.openGLControl1.OpenGL; + OpenGL gl = openGLControl1.OpenGL; + gl.Enable(OpenGL.GL_DEPTH_TEST); + //娓呴櫎娣卞害缂撳瓨 gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT); + + // 璁剧疆褰撳墠鐭╅樀妯″紡,瀵规姇褰辩煩闃靛簲鐢ㄩ殢鍚庣殑鐭╅樀鎿嶄綔 + gl.MatrixMode(OpenGL.GL_PROJECTION); + + // 閲嶇疆褰撳墠鎸囧畾鐨勭煩闃典负鍗曚綅鐭╅樀,灏嗗綋鍓嶇殑鐢ㄦ埛鍧愭爣绯荤殑鍘熺偣绉诲埌浜嗗睆骞曚腑蹇� + gl.LoadIdentity(); + + // 鍒涘缓閫忚鎶曞奖鍙樻崲 + gl.Perspective(45f, openGLControl1.Width / openGLControl1.Height, 15696f, 38395f); + + + // 璁剧疆褰撳墠鐭╅樀涓烘ā鍨嬭鍥剧煩闃� + gl.MatrixMode(OpenGL.GL_MODELVIEW); //閲嶇疆褰撳墠鎸囧畾鐨勭煩闃典负鍗曚綅鐭╅樀,灏嗗綋鍓嶇殑鐢ㄦ埛鍧愭爣绯荤殑鍘熺偣绉诲埌浜嗗睆骞曚腑蹇� gl.LoadIdentity(); - gl.Translate(_paras.Translation.X, _paras.Translation.Y, _paras.Translation.Z); + // gl.Translate(-_paras.Ceneter.X, -_paras.Ceneter.Y, -_paras.Ceneter.Z); + //gl.Translate(0, 0, -5f); - gl.Rotate(_paras.Rotation.X, 1, 0, 0); - gl.Rotate(_paras.Rotation.Y, 0, 1, 0); - gl.Rotate(_paras.Rotation.Z, 0, 0, 1); + //gl.Rotate(_paras.Rotation.X, 1, 0, 0); + // gl.Rotate(_paras.Rotation.Y, 0, 1, 0); + //gl.Rotate(_paras.Rotation.Z, 0, 0, 1); + gl.Color(1.0f, 1.0f, 1.0f); foreach (var pipe in _network.Pipes) { var startPosition = pipe.StartPosition; var endPosition = pipe.EndPosition; gl.Begin(OpenGL.GL_LINES); - gl.Color(1.0f, 1.0f, 1.0f); + gl.Vertex(startPosition.X, startPosition.Y, startPosition.Z);//宸﹂《鐐� gl.Vertex(endPosition.X, endPosition.Y, endPosition.Z);//鍙抽《鐐� gl.End(); } - gl.Begin(OpenGL.GL_LINES); gl.Color(1.0f, 1.0f, 1.0f); + gl.Begin(OpenGL.GL_LINES); + gl.Vertex(_paras.BoundingBox.Min.X, _paras.BoundingBox.Min.Y, _paras.BoundingBox.Min.Z);//宸﹂《鐐� gl.Vertex(_paras.BoundingBox.Max.X, _paras.BoundingBox.Max.Y, _paras.BoundingBox.Max.Z);//鍙抽《鐐� gl.End(); + #region 鐐瑰埌绾� + gl.Begin(OpenGL.GL_LINES); + gl.Color(1.0f, 1.0f, 1.0f); + gl.Vertex(-2.0f, 0.0f, 0.0f);//宸﹂《鐐� + gl.Vertex(2.0f, 2.0f, 0.0f);//鍙抽《鐐� + gl.End(); + #endregion + + var minX = _paras.BoundingBox.Min.X; + var maxX = _paras.BoundingBox.Max.X; + var minY = _paras.BoundingBox.Min.Y; + var maxY = _paras.BoundingBox.Max.Y; + var minZ = _paras.BoundingBox.Min.Z; + var maxZ = _paras.BoundingBox.Max.Z; + + float distance = Math.Max(maxX - minX, Math.Max(maxY - minY, maxZ - minZ)) * 1.5f; + + var centerX = (minX + maxX) / 2f; + var centerY = (minY + maxY) / 2f; + var centerZ = (minZ + maxZ) / 2f; + + var cameraX = centerX + distance; + var cameraY = centerY + distance; + var cameraZ = centerZ + distance; + + //gl.LookAt(cameraX, cameraY, cameraZ, centerX, centerY, centerZ, 0, 1, 0); + gl.LookAt(-27484f, -12576f, 8833f, 23675f, 23079f, -7200f, 0f, 0f, 1f); gl.Flush(); //寮哄埗鍒锋柊 } @@ -100,8 +146,8 @@ { return; } - _paras.Perspective.Aspect = this.openGLControl1.Width / (float)this.openGLControl1.Height; - Reset(); + // _paras.Perspective.Aspect = this.openGLControl1.Width / (float)this.openGLControl1.Height; + //Reset(); } //閲嶇疆 @@ -123,7 +169,7 @@ gl.Perspective(_paras.Perspective.Fovy, _paras.Perspective.Aspect, _paras.Perspective.Near, _paras.Perspective.Far); // 瑙嗙偣鍙樻崲 - 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.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); @@ -135,7 +181,7 @@ { return; } - Reset(); + //Reset(); } } } -- Gitblit v1.9.3