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