Managed DirectX +C# 开发(入门篇)(二)

原创 2007年06月26日 10:08:00
 
第二章 向量的运算(1)
1:向量相等
几何学上,有同样方向和长度的两个向量相等。数学上,我们说有同样维数和分量的向量相等。例如:如果ux = vx, uy = vy, 且 uz = vz.那么(ux, uy, uz) = (vx, vy, vz)。在代码中我们能够用“= =”判断两个向量相等。
2:向量模长
向量的大小是有向线段的长度。知道向量的分量,利用下面的公式就能计算出向量的大小。
‖u‖表示向量u的长度。例如:计算向量u = (1, 2, 3)和v = (1, 1)的大小。
根据公式(1),我们得到:
在DirectX中,向量的Length()方法可以得到向量模长,例如:
Vector3 vec =new Vector3(1,2,3);
MessageBox.Show("向量V(1,2,3)的模长为:/n"+vec.Length().ToString());
执行结果:
另外一个有用的方法是Vector.LengthSq(),求得的是向量模长的平方,在实际中,它的用途可能超过Length();如果在一个程序中前面需求模长,后面又要对模长平方运算,用此方法就省去了许多计算,我们知道,开平方运算对计算机来说是其实是个痛苦的事情;
3:向量单位化
向量单位化就是让向量的大小等于1,叫作单位向量。能利用向量大小以及各个分量把一个向量单位化:
比如,对于向量u = (1, 2, 3) 和 v = (1, 1)。单位化方法如下
首先,利用前面的求向量模长公式得到‖u‖=√14 和 ‖v‖=√2,因此:
以下代码是将向量单位化以后,看看向量的值及模长:
Vector3 vec =new Vector3(1,2,3);
                     vec.Normalize();
                     string disString="向量V(1,2,3)单位化以后为:/n";
                     disString+="V("+vec.X.ToString()+" ,"+vec.Y.ToString()+" ,"+vec.Z.ToString()+")/n";
                     disString+="单位化以后的模长为:"+vec.Length().ToString();
                     MessageBox.Show(disString,"向量的单位化");
程序执行结果如下:
4:向量相加
能够通过分别把两个向量的各个分量相加得到向量之和,注意在相加之前必须保证它们有相同的维数。
下面图中显示的是向量相加几何表示:
以下代码显示两个向量的相加,并把相加后的结果显示出来:
                     Vector3 vec1 =new Vector3(1,2,3);
                     Vector3 vec2 =new Vector3(3,4,5);
                     Vector3 vec3=Vector3.Add(vec1,vec2);
                     string disString="V(1,2,3)+V(3,4,5):/n";
       disString+="V("+vec3.X.ToString()+" ,"+vec3.Y.ToString()+" ,"+vec3.Z.ToString()+")/n";
       MessageBox.Show(disString,"向量的相加");
执行结果如下:
5:向量相减
和加法类似,通过分别把两个向量的各个分量相减得到向量之差。
图中显示的是几何学上的向量相减。
以下代码显示两个向量的相减,并把相减后的结果显示出来:
private void VectorSubtract()
              {
                     Vector3 vec1 =new Vector3(1,2,3);
                     Vector3 vec2 =new Vector3(3,4,5);
                     Vector3 vec3=Vector3.Subtract(vec1,vec2);
                     string disString="V(1,2,3)-V(3,4,5):/n";
                     disString+="V("+vec3.X.ToString()+" ,"+vec3.Y.ToString()+" ,"+vec3.Z.ToString()+")/n";
                     MessageBox.Show(disString,"向量的相减");            
              }
执行结果如下:
6:向量的数乘
用一个数与向量相乘,向量按比例变化。用负数去乘改变方向。
以下代码计算向量的数乘:
private void VectorScale()
              {
                     Vector3 vec1 =new Vector3(1,2,3);
                     Vector3 vec3=Vector3.Scale (vec1,10);
                     string disString="V(1,2,3)乘以10:/n";
                     disString+="V("+vec3.X.ToString()+" ,"+vec3.Y.ToString()+" ,"+vec3.Z.ToString()+")/n";
                     MessageBox.Show(disString,"向量的数乘");     
              }
执行结果是:
 

DirectX11入门篇

开始学些DirectX11,跟着流水线走。 IA阶段IA阶段主要读取初始数据从用户填充的buffer里面并且组装成图元用于下一个管线阶段。IA主要用到三个函数:void IASetIndexBuff...
  • hubing_
  • hubing_
  • 2015年07月22日 12:54
  • 405

C# + Managed DirectX 实现水果机滚动

  • 2010年11月08日 10:05
  • 3.73MB
  • 下载

C#(Mono)开发手机及平板应用入门篇(含WCF服务实现)

摘要:本文是在开发Mono手机平板项目时,对安装Mono for Android工具,调用WCF服务,等一些要注意的问题进行汇总;其中包括WCF异步调用,SOAP代理类调用等。 一:前提: 1> ...
  • besley
  • besley
  • 2012年09月10日 11:15
  • 4031

.NET 入门篇基础PPT C#

  • 2011年03月29日 16:52
  • 12.94MB
  • 下载

C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。

C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。 标签: c#objectnewlineexceptionbytestring 2010-05-17 01:10 117...

C# 串口操作系列(2) -- 入门篇,为什么我的串口程序在关闭串口时候会死锁

C# 串口操作系列(2) -- 入门篇,为什么我的串口程序在关闭串口时候会死锁 ? 标签: c#objectuibyte通讯.net 2010-05-19 08:43 55211人阅读 评...

.NET入门篇 C#代码注释

.NET中有三种注释: 1.单行

C# 串口操作系列(2) -- 入门篇,为什么我的串口程序在关闭串口时候会死锁 ?

第一篇文章我相信很多人不看都能做的出来,但是,用过微软SerialPort类的人,都遇到过这个尴尬,关闭串口的时候会让软件死锁。天哪,我可不是武断,算了。不要太绝对了。99.9%的人吧,都遇到过这个问...

C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子

C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。 分类: 通讯类库设计2010-05-17 01:10 60772人阅读 评论(232) 收藏 举报 c#obj...

C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wuyazhe/archive/2010/05/17/5598945.aspx 我假设读者已经了解了c#的语法...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Managed DirectX +C# 开发(入门篇)(二)
举报原因:
原因补充:

(最多只允许输入30个字)