前      言

以前是用VC 作计算机图形学的,大约在一年前,公司接到一个用C#+DirecX的项目,从那时起便开始学习Mangaged DirectX ,现将在开发过程中的一点总结发表出来,和同行们共同参考,共同学习,共同进步,前面是一些基础内容,算是入门篇吧,现在正将开发过程中所用到的一些算法整理中,算是中级篇吧。
1:在整理过程中,有些内容为从网上找的资料,部分为翻译国外文章,正所谓“天下文章一大抄,就看会抄不会抄。”,如果侵犯了你的个人权益,可同我联系;
2:以前的开发环境为VS.NET2003 1.1+DirectX9.0。现在开发环境为VS2005,有些程序开发环境记不清了。但应不受影响。
3:有些内容为GDI+所做,所有的范例都保存有源代码,但受限于网络情况,有些没有传上去,有需要的可以联系;
4:由于才学疏浅,个人水平有限,希望大虾们批评指正;
5:联系方式:mail:tongabcd@yeah.net QQ:50759188 (加我时注明Managed DirectX)
第一章 向量
在这一部分中将介绍一些基本的数学知识,主要讨论的内容是向量、矩阵和变换,另外还有一些关于空间点、线、面、体的相关知识,如果你已经掌握了《线性代数》和《空间解析几何》这两门课程,读起来会很轻松,如果以前没接触过它们,也没有关系,只不过会感到有点吃力;在这里会结合D3DX类中相关的数学模型和有关函数结合程序介绍它们;
在本部分中主要介绍四个方面的内容:
(1)、向量的概念及三维概念;
(2)、矩阵的概念及在DirectX10中的应用;
(3)、如何在DirectX10生成线和面;
(4)、三维数学运算公式及相关类。比如向量的点积、向量的叉积等;
1:向量
在三维欧氏空间直角坐标系中,用有向线段表示向量,我们知道,空间中两点决定一条直线段,如果把这两点的方向也包解在内,就成为有向线段,就是向量,可以看出,向量的两个属性是它的长度和顶点所指的方向。这样,就可以使用向量来模拟既有大小又有方向的物理模型;比如:在三维游戏中经常要出现粒子系统,可以使用向量来模拟粒子的速度和加速度;再比如:直线灯光不仅有灯光的位置,还有光线的方向,摄像机也有位置及视角。因此,向量为在三维空间中表示方向提供了方便;下图显示的都是空间向量;
(图一)
向量有大小有方向,但是和位置无关,长度和方向都相同但起始点位置不同的两个向量是相等的。现在看上面的图中,向量u和v是相等的。
2:坐标系
三维空间中,当固定了X轴方向和Y轴方向之后,Z轴方向可以朝里,也可以朝外,称为左手坐标系和右手坐标系;
3:向量的表示
因为向量与位置无关,因此可以通过平移使向量的起点和坐标系的原点重合。因此,一个向量的标准位置可以只用一个点来描述就可以了,比如说向量v(1,2,3),就是指起点为(0,0,0),终点为v(1,2,3)的有向线段;
通常,使用一个字母来表示一个向量,大小写无关,另外,有时,只需要使用X,Y坐标而不使用Z坐标,比如对一个二维游戏来说,Z值有时是多余的,但有时对一个点来说,除了用X、Y、Z来表示它的位置之外,还需要一个数值来表示它的颜色、变换等信息。因此,在DirectX中,有二维、三维、四维向量。如2、3和4维向量分别是:u = (ux, uy), N = (Nx, Ny, Nz), c = (cx, cy, cz, cw)。
4:单位向量
只有1个单位长度的向量叫做单位向量。如果它们的方向恰好又在坐标轴上,称为单位基向量;它们被叫做i, j和k向量,分别沿着坐标系的x轴,y轴和z轴,并且有1的单位长:i = (1, 0, 0), j = (0, 1, 0), and k = (0, 0, 1)。
在DirectX中,定义一个二维、三维、四维向量的类在Microsoft.DirectX命名空间中,分别为Vector2、Vector3、Vector4
5:示例
下面代码定义一个二维向量,并绘出一条直线,在这里只写出相关代码,完整代码见源文件;
private void Render()
{
Vector2[] vecs = new Vector2[2];
vecs[0]=new Vector2(300,300);
device.Clear(ClearFlags.Target, System.Drawing.Color.White , 1.0f, 0);
device.BeginScene();
using (Line l = new Line(device))
{
l.Draw(vecs, Color.Red );
}
device.EndScene();
device.Present();
}
执行结果如下:
转自:dandancool http://blog.csdn.net/dandanCool/archive/2007/06/26/1666597.aspx

(转)Managed DirectX +C# 开发(入门篇)(一)相关推荐

  1. 《Managed DirectX +C# 开发(入门篇)》系列文章

    写在最前: 1.本系列文章版权归tongabcd所有,转载自dandanCool(并非原创作者),此处只作收藏与分享之用. 2.此系列文章如有再转,需按如下方式于文章醒目位置显示标明原创作者极其联系方 ...

  2. Hololens开发入门篇-郑洪智-专题视频课程

    Hololens开发入门篇-572人已学习 课程介绍         本课程使用Hololens模拟器,基于Unity2017.2及Visual Studio 2017开发 课程收益     学会Ho ...

  3. cesium 页面截图_Cesium开发入门篇 | 02Cesium开发环境搭建及第一个示例

    01 开发环境准备 利用Cesium API进行二次开发属于Web前端开发范畴,目前比较火的Web三剑客包括React.Vue.AngularJS,每个js库的详细介绍可转至官网查看,在此不做详细介绍 ...

  4. 海思软件开发入门篇 (一)

    标题 海思软件开发入门篇 (一)   (第一次写博客,有错别字与写的不好的地方敬请谅解.)   加过很多群,也逛过很多论坛,很多人在问,第一次接触海思不知道从而入手,的确,现在一个SDK动不动上G,还 ...

  5. 【微信小程序】开发入门篇(二)

    前言 ❤️ 所谓信仰,可能就是在人们一无所剩的时候仅有的那种东西 ❤️ [微信小程序]开发入门篇(二) 一.小程序的宿主环境 (1)宿主环境简介 1.1 什么是宿主环境 1.2 小程序的宿主环境 (2 ...

  6. 【微信小程序】开发入门篇(一)

    前言 ❤️ 你可能认为一个人无法改变世界,但我想让你知道,这个世界也无法改变像我这样的人 ❤️ [微信小程序]开发入门篇(一) 一.小程序简介 (1)小程序与普通网页开发的区别 二.第一个小程序 (1 ...

  7. 后悔没早点看这篇直播系统定制开发入门篇

    直播想必大家都不陌生了,在互联网的风口下,以及5G技术的推动,流量带宽的提高,使得直播在我们生活中扮演着越来越重要的角色.本文先来讲一下入门直播需要了解的一些基本概念,搜集整理了直播入门需要了解的一些 ...

  8. RISC-V嵌入式开发入门篇2:RISC-V汇编语言程序设计(中)

    原文出处:https://mp.weixin.qq.com/s/3RHss3vhfK004-TtM8fpeA 随着国内第一本RISC-V中文书籍<手把手教你设计CPU--RISC-V处理器篇&g ...

  9. [洪流学堂]Hololens开发入门篇1之模拟器开发环境配置

    本教程基于Unity2017.2及Visual Studio 2017 本教程编写时间:2017年11月27日 视频教程 本教程入门篇的视频课程也已经上线 看视频教程,细节无遗漏哦~ https:// ...

最新文章

  1. 系统异常和不稳定的原因总结
  2. 比较两个ListT是否相同
  3. 云计算之路-道歉,无地自容的:4月7日14:15~18:35网站故障给大家带来麻烦了
  4. python期末考试编程题_智慧树知到_Python程序设计基础_期末考试答案
  5. python battleship_codecademy_python_Battleship!
  6. 清除浮动的方法总结CSS实现水平垂直居中方法总结
  7. JAVA 笔记(三)
  8. jenkins 新手入门安装失败_树莓派安装jenkins,安安静静做个持续集成打包机
  9. C语言深度剖析书籍学习记录 第四章 指针和数组
  10. Java初级笔记-第一章
  11. Windows 无法卸载IE9怎么办
  12. div 垂直居中的六种方法
  13. 海森矩阵的特征值和特征向量的物理意义推导
  14. 在英文邮件中,如何在开头对收件人进行称呼?
  15. Ps图片文字处理与python多张图片合成
  16. android 调用系统图片编辑,android 调用系统 裁剪 图片
  17. 伪随机数的爆破--2
  18. 精密光学测量1-概论
  19. c语言RLC算法,「百科」1分钟了解RC、RL、RLC电路原理
  20. xmanager5连接CENTOS6

热门文章

  1. 洛谷——P2192 HXY玩卡片
  2. 盒子模型之外边距margin(HTML、CSS)
  3. visionpro 窗口显示文字
  4. Java解决找不到主类或者无法加载主类
  5. pop错误 找不到服务器,POP3 连接事务失败 - 找不到客户端访问服务器
  6. 过去一年,被我们“高估”的技术清单
  7. css displayhidden
  8. 模拟ARP报文发送,通过改变拓扑结构,观察报文发送方法以及途径
  9. Apache阶段二-
  10. Java 容器源码分析之 TreeMap