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

原创 2007年06月26日 10:10:00

  第二章 向量的运算(2)

7:向量的最大与最小值
最大值是从两个向量X,Y,Z值中分别取出最大值组成一个新向量;
最小值是从两个向量X,Y,Z值中分别取出最小值组成一个新向量;
看以下代码:
 
              private void VectorMax()
              {
                     Vector3 vec1 =new Vector3(6,2,3);
                     Vector3 vec2= new Vector3(1,2,5);
                     Vector3 vec3=Vector3.Maximize (vec1,vec2);
                     string disString="V(6,2,3)与V(1,2,5)最大值:/n";
                     disString+="V("+vec3.X.ToString()+" ,"+vec3.Y.ToString()+" ,"+vec3.Z.ToString()+")/n";
                     MessageBox.Show(disString,"向量最大值");     
              }
执行结果为:
8:求两个向量间的一个插值向量
设有两个向量pLeft,pRight,得到的向量值计算公式为:
pLeft + interpolater(pRight - pLeft).
举例代码如下:
private void VectorLerp()
              {
                     Vector3 vec1 =new Vector3(6,2,3);
                     Vector3 vec2= new Vector3(1,2,5);
                     Vector3 vec3=Vector3.Lerp(vec1,vec2,0.5f);
                     string disString="V(6,2,3)与V(1,2,5)之间的一个插值向量:/n";
                     disString+="V("+vec3.X.ToString()+" ,"+vec3.Y.ToString()+" ,"+vec3.Z.ToString()+")/n";
                     MessageBox.Show(disString,"插值向量");  
              }
执行结果:
显然 3.5=6+(1-6)*0.5;2=2+(2-2)*0.5;4=3+(5-3)*0.5;
9:点积
数学上定义点积是两个向量的乘积。按下面等式计算:
 
点积有一个重要的定理称为余弦定律;
u • v =|u||v|cosθ,表示两个向量的点积是它们的模长和夹角的余弦之积。因此,如果u 和v都是单位向量,那么u • v就是它们夹角的余弦。
一些点积有用的特性
(1)u • v = 0,那么u⊥v。
(2)u • v > 0,那么两个向量的角度θ小于90度。
(3)u • v < 0,那么两个向量的角度θ大于90度。
比如以下求两个向量的点积示例:
private void VectorDot()
         {
              Vector3 vec1 =new Vector3(6,2,3);
              Vector3 vec2= new Vector3(1,2,5);
              float dotValue=Vector3.Dot(vec1,vec2);
              string disString="V(6,2,3)与V(1,2,5)的点积:/n"+dotValue.ToString();
              MessageBox.Show(disString,"向量点积");   
         }
执行结果如下:
10:叉积
通过把两个向量u和v相乘的到另一的向量p.把u和v两个向量通过十字相乘得到向量p,向量p垂直于u和v。也就是说向量p垂直于u并且垂直于v。
计算公式是:
 也就是,得到后来的向量X,Y,Z值分别是:
 注意:向量p垂直于u 和v所决定的平面,至于方向因左右手坐标系不同而不同;
以下代码为在XOY平面内两个向量作叉积,最后返回的值垂直于XOY平面,也就是说平行于Z轴;
     private void VectorCross()
         {
              Vector3 vec1 =new Vector3(6,4,0);
              Vector3 vec2= new Vector3(-1,2,0);
              Vector3 vec3=Vector3.Cross(vec1,vec2);
              string disString="V(6,4,0)与V(-1,2,0)的叉积:/n";            disString+="V("+vec3.X.ToString()+" ,"+vec3.Y.ToString()+" ,"+vec3.Z.ToString()+")/n";
              MessageBox.Show(disString,"向量叉积");        
         }
执行结果是:
 
 
 

Visual C# 的DirectX开发系列1初识DirectX

Visual C# 的DirectX开发系列一初识DirectX 1.如何查看本机的DirectX的版本:  点“开始”-“运行”,在“运行”里输入“dxdiag”回车,弹出DirectX...
  • y13156556538
  • y13156556538
  • 2016年03月08日 17:03
  • 926

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

 第二章 向量的运算(1)1:向量相等几何学上,有同样方向和长度的两个向量相等。数学上,我们说有同样维数和分量的向量相等。例如:如果ux = vx, uy = vy, 且 uz = vz.那么(ux,...
  • dandanCool
  • dandanCool
  • 2007年06月26日 10:08
  • 4217

VC#版DirectX开发入门详解

一 首先需要安装DirectX SDK, 可在 http://download.microsoft.com/download/F/1/7/F178BCE4-FA19-428F-BB60-F3DEE11...
  • bcbobo21cn
  • bcbobo21cn
  • 2015年04月05日 20:42
  • 1772

VC#版DirectX开发入门详解

一 首先需要安装DirectX SDK, 可在 http://download.microsoft.com/download/F/1/7/F178BCE4-FA19-428F-BB60-F3DEE11...
  • bcbobo21cn
  • bcbobo21cn
  • 2015年04月05日 20:42
  • 1772

DirectX11 地形水波纹理示例Demo

地形纹理演示程序1. 地形纹理Demo介绍在本例中,我们要为地形和水体添加纹理。首先,我们要在地形上平铺一幅草地纹理。 由于地形网格很大,如果我们直接拉伸纹理,那么每个三角形只能得到很少的几个纹理元素...
  • sinat_24229853
  • sinat_24229853
  • 2015年10月04日 00:05
  • 1206

C# WinForm构架下的DirectX框架

1) 应用程序框架     启动时加载DirectX    [c-sharp] view plaincopy #region      ...
  • yybj
  • yybj
  • 2014年07月31日 10:36
  • 1398

c#开发环境下用Directx载入3D模型

Direcx一般都是用VC++开发环境,而c#相关的资料比较少,最近做的一个项目中需要用到一个3D模型,而开发环境是visual c#,没办法,就四处搜集资料,查找相关的资料,然后找到了几篇相关的博文...
  • t46414704152abc
  • t46414704152abc
  • 2015年05月16日 15:27
  • 5793

C#中使用DirectX编程

C#中使用DirectX编程 转 我感觉声音的播放比较简单。我们从播放声音开始。为什么我这么觉得?我也不知道。 这里是展示最最最最最简单的directx播放声音的例...
  • shiwaxinbin
  • shiwaxinbin
  • 2016年10月21日 14:58
  • 670

建立第一个directX程序——在C#下利用DirectSound实现声音播放

//转自:http://blog.csdn.net/cutebab0888/article/details/1143310 这是给directX初学者的教程,如果你是大虾,大可不必理...
  • u012637735
  • u012637735
  • 2014年11月20日 16:49
  • 1687

Visual C# 的DirectX开发系列二了解摄像机

Visual C# 的DirectX开发系列二了解摄像机
  • yangyisen0713
  • yangyisen0713
  • 2015年01月22日 12:14
  • 1754
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Managed DirectX +C# 开发(入门篇)(三)
举报原因:
原因补充:

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