资源简介
3D直角坐标系演示控件,使用C#和OpenTK(基于OpenGL)编写,具有如下特点:
1.带有一个空间方位指针。指针指向可由方向角和俯仰角确定。
2.实现了鼠标轨迹球(ArcBall)功能。可以用鼠标拖动直角坐标系任意旋转,运行流畅,查看灵活。
代码片段和文件信息
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using OpenTK;
using OpenTK.Graphics;
namespace AxlesGL
{
public partial class Axles3D : GLControl
{
bool _loaded = false;
double _azi _ele;
double _angleX _angleY _angleZ;
// 旋转角度
float theta = 0.0f;
// 旋转轴
float[] axis = { 1.0f 0.0f 0.0f };
// 鼠标上次和当前坐标(映射到单位半球面)
float[] lastPos = { 0.0f 0.0f 0.0f };
float[] curPos = { 0.0f 0.0f 0.0f };
// 上一次转换矩阵
float[] lastMatrix =
{
1.0f 0.0f 0.0f 0.0f
0.0f 1.0f 0.0f 0.0f
0.0f 0.0f 1.0f 0.0f
0.0f 0.0f 0.0f 1.0f
};
public double Azimuth
{
get
{
return _azi;
}
set
{
_azi = value;
if (_loaded)
DrawAll();
}
}
public double Elevation
{
get
{
return _ele;
}
set
{
_ele = value;
if (_loaded)
DrawAll();
}
}
public double AngleX
{
get
{
return _angleX;
}
set
{
_angleX = value;
if (_loaded)
DrawAll();
}
}
public double AngleY
{
get
{
return _angleY;
}
set
{
_angleY = value;
if (_loaded)
DrawAll();
}
}
public double AngleZ
{
get
{
return _angleZ;
}
set
{
_angleZ = value;
if (_loaded)
DrawAll();
}
}
public Axles3D()
{
InitializeComponent();
AngleY = 30;
AngleZ = -30;
}
private void Axles3D_Resize(object sender EventArgs e)
{
if (_loaded)
{
DrawAll();
}
}
private void Axles3D_Paint(object sender PaintEventArgs e)
{
if (_loaded)
{
DrawAll();
}
}
private void DrawAll()
{
//SETGL
GL.Enable(EnableCap.Blend);
GL.Enable(EnableCap.DepthTest);
GL.ShadeModel(ShadingModel.Smooth);
GL.ClearColor(Color.Black);
GL.ClearColor(1.0f 1.0f 0.5f 0.7f);
GL.BlendFunc(BlendingFactorSrc.SrcAlpha BlendingFactorDest.OneMinusSrcAlpha);
//SETVIEW
GL.Viewport(0 0 this.Bounds.Width this.Bounds.Height);
GL.MatrixMode(MatrixMode.Projection);
GL.LoadIdentity();
Glu.Perspective(45.0f (float)this.Bounds.Width / (float)this.Bounds.Height 1.0 10.0);
Glu.LookAt(0.0 0.0 4.0 0.0 0.0 3.0 0.0 1.0 0.0);
GL.MatrixMode(MatrixMode.Modelview);
GL.LoadIdentity();
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
// 计算新的旋转矩阵,即:M = E · R = R
GL.Rotate(theta axis[0] axis[1] axis[2]);
// 左乘上前一次的矩阵,即:M = R · L
GL.MultMatrix(lastMatrix);
// 保存此次处理结果,即:L = M
GL.GetFloat(GetPName.ModelviewMatrix lastMatrix);
theta = 0.0f;
// 画坐标轴
DrawOLineInGL(0 0 1.1f 2.0f Color.Red true);
DrawOLineInGL(Math.PI 0 1.1f 2.0f Color.Red false);
DrawOLineInGL(Math.PI / 2 0 1.1f 2.0f Color.Lime
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1392 2018-05-11 10:01 3D坐标系演示\3D坐标系演示.sln
..A..H. 30720 2011-07-05 01:13 3D坐标系演示\3D坐标系演示.suo
..A..H. 30720 2011-07-05 01:13 3D坐标系演示\3D坐标系演示.v11.suo
文件 8259 2011-07-05 01:11 3D坐标系演示\AxlesGL\Axles3D.cs
文件 1442 2011-07-04 19:31 3D坐标系演示\AxlesGL\Axles3D.Designer.cs
文件 5814 2011-07-04 19:31 3D坐标系演示\AxlesGL\Axles3D.resx
文件 3515 2018-05-11 10:01 3D坐标系演示\AxlesGL\AxlesGL.csproj
文件 11264 2018-05-11 10:01 3D坐标系演示\AxlesGL\bin\Debug\AxlesGL.dll
文件 24064 2018-05-11 10:01 3D坐标系演示\AxlesGL\bin\Debug\AxlesGL.pdb
文件 3223552 2010-10-07 00:48 3D坐标系演示\AxlesGL\bin\Debug\OpenTK.Compatibility.dll
文件 2719744 2010-10-07 00:47 3D坐标系演示\AxlesGL\bin\Debug\OpenTK.dll
文件 24576 2010-10-07 00:47 3D坐标系演示\AxlesGL\bin\Debug\OpenTK.GLControl.dll
文件 5904 2010-10-07 00:47 3D坐标系演示\AxlesGL\bin\Debug\OpenTK.GLControl.xm
文件 3843235 2010-10-07 00:47 3D坐标系演示\AxlesGL\bin\Debug\OpenTK.xm
文件 180 2018-05-11 10:01 3D坐标系演示\AxlesGL\obj\Debug\AxlesGL.Axles3D.resources
文件 1254 2018-05-11 10:01 3D坐标系演示\AxlesGL\obj\Debug\AxlesGL.csproj.FileListAbsolute.txt
文件 776 2018-05-11 10:01 3D坐标系演示\AxlesGL\obj\Debug\AxlesGL.csproj.GenerateResource.Cache
文件 17214 2018-05-11 10:01 3D坐标系演示\AxlesGL\obj\Debug\AxlesGL.csprojResolveAssemblyReference.cache
文件 11264 2018-05-11 10:01 3D坐标系演示\AxlesGL\obj\Debug\AxlesGL.dll
文件 24064 2018-05-11 10:01 3D坐标系演示\AxlesGL\obj\Debug\AxlesGL.pdb
文件 6854 2018-05-11 10:01 3D坐标系演示\AxlesGL\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
文件 4575 2018-05-11 10:01 3D坐标系演示\AxlesView\AxlesView.csproj
文件 11264 2018-05-11 10:01 3D坐标系演示\AxlesView\bin\Debug\AxlesGL.dll
文件 24064 2018-05-11 10:01 3D坐标系演示\AxlesView\bin\Debug\AxlesGL.pdb
文件 9216 2018-05-11 10:01 3D坐标系演示\AxlesView\bin\Debug\AxlesView.exe
文件 22016 2018-05-11 10:01 3D坐标系演示\AxlesView\bin\Debug\AxlesView.pdb
文件 21464 2018-05-11 10:02 3D坐标系演示\AxlesView\bin\Debug\AxlesView.vshost.exe
文件 490 2012-06-06 02:06 3D坐标系演示\AxlesView\bin\Debug\AxlesView.vshost.exe.manifest
文件 3223552 2010-10-07 00:48 3D坐标系演示\AxlesView\bin\Debug\OpenTK.Compatibility.dll
文件 2719744 2010-10-07 00:47 3D坐标系演示\AxlesView\bin\Debug\OpenTK.dll
............此处省略60个文件信息
- 上一篇:基于RFID的RSSI测距
- 下一篇:c#工资管理系统+文档只供参考
相关资源
- C# 反射学习
- C# asp.net验证码
- C#托盘图标 带右键菜单
- C#Twincat3读写程序
- C#编写的KTV系统(附access数据库)
- C# 桌面时钟(穿透)
- C#图书管理系统(源代码+数据库+系统
- C#通讯调试工具源码
- 纯C#的DICOM读取和通讯
- C# 多线程任务池
- C#生成条形码
- C# 利用ListView空间导航数据库信息
- C# 调用win32 api函数-user32.dll详细说明
- C# 调用BarTender打印条码DEMO
- 大型比赛竞赛抽签系统 可打印 c# vs
- C#编写的Gerber查看器
- lua C# .Net4.0 vs2010 LuaInterface
- C#十六进制编辑器
- 明华URF-35H读卡器 C#读写源码 为大家
- C#文件流读取CSV文件
- c#读写PDF文件sql
- C# winform Socket大文件传输
- c#车牌识别系统附30张测试图片
- 《C#面向对象程序设计》源代码(CS)
- 金旭亮《C#面向对象程序设计》教案
- 试题库管理系统毕业论文(C#)源程序
- 学校网站原代码(C#.NET)
- C#-数据库操作技术-员工管理系统
- c#web开发入门经典
- C#与Matlab混合编程的几种方式
评论
共有 条评论