注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

AutoCAD.NET中的点、向量和矩阵(二)  

2011-01-05 14:08:40|  分类: ObjectARX |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

二维向量

       二维向量和和二维点的构造方法完全相同,前面已经说过,对于数对(100,200),在不知道行为之前,我们不能区分它到底是一个向量还是一个点,因此,他们在计算机中的构造是一样的,只是在具体的行为上有些不同。

先介绍一下向量的基本知识,假设有向量:

AutoCAD.NET中的点、向量和矩阵(二) - Castor - 趁年轻,多折腾~~

 向量的长度:

AutoCAD.NET中的点、向量和矩阵(二) - Castor - 趁年轻,多折腾~~

向量的相等

向量只要方向和长度相同,即为相等,不管起点和终点在何处,两个相等的向量如下:

AutoCAD.NET中的点、向量和矩阵(二) - Castor - 趁年轻,多折腾~~

 

向量的和差运算

几何意义如下:

AutoCAD.NET中的点、向量和矩阵(二) - Castor - 趁年轻,多折腾~~

 

数学运算方法如下:

AutoCAD.NET中的点、向量和矩阵(二) - Castor - 趁年轻,多折腾~~

 

向量的数乘

几何意义是将该向量的长度放大或缩小给定的倍数,如下:

AutoCAD.NET中的点、向量和矩阵(二) - Castor - 趁年轻,多折腾~~

数学运算如下:

 

AutoCAD.NET中的点、向量和矩阵(二) - Castor - 趁年轻,多折腾~~

 

两个向量的点积:

 

AutoCAD.NET中的点、向量和矩阵(二) - Castor - 趁年轻,多折腾~~

 

两个向量的叉积:

 

AutoCAD.NET中的点、向量和矩阵(二) - Castor - 趁年轻,多折腾~~

 

注意两个向量的叉积是一个新向量。

AutoCAD中二维向量的属性和方法如下表:

属性或方法

说明

Angle

返回该向量与X轴正方向之间的夹角

Length

该向量的欧几里得长度

LengthSqrd

该向量的欧几里得长度的平方

X

该向量的第一分量

Y

该向量的第二分量

Add()

返回本向量和给定向量的和向量

DivideBy()

返回一个二维向量,该向量的XY分量是原向量XY分量同时除以一个实数值后的结果

DotProduct()

返回本向量和另一个向量的点积

GetAngleTo()

返回本向量到给定向量之间的夹角

GetNormal()

重载。返回该向量的单位向量

GetPerpendicularVector()

返回一个和该向量垂直的向量

IsCodirectionalTo()

检验该向量是否和一个给定的向量同向

IsParallelTo()

检验该向量是否和一个给定的向量平行

IsEqualTo()

重载。检验该向量是否和一个给定的向量相等

IsPerpendicularTo()

重载。检验该向量是否和一个给定的向量垂直

IsUnitLength()

重载。检验该向量是否为单位向量。

IsZeroLength()

重载。检验该向量是否为零向量

Mirror()

返回该向量关于给定向量的对称向量

MultiplyBy()

DivideBy()方法相反,返回一个二维向量,该向量的XY分量是原向量XY分量同时乘以一个实数值后的结果

Negate()

返回该向量的相反向量,即(-x,-y)

RotateBy()

返回本向量旋转给定角度后的新向量

Subtract()

Add()方法相反,返回本向量和给定向量的差向量

ToArray()

返回一个double[]数组,该向量的X分量下标为0Y分量下标为1

ToString()

返回包含该向量信息的字符串

TransformBy()

该方法传递一个Matrix2d类型的变量(图形变换矩阵),对该向量实施变换

       不过向量并没有GetAsPoint()方法。另外,向量也重载了运算符+-*/==!=,其意义也不尽相同。

+:两个向量的和运算

-:两个向量的差运算

*:有三种重载方法,分别如下:

public static Vector2d operator *(Matrix2d a, Vector2d b);

public static unsafe Vector2d operator *(Vector2d a, double factor);

public static Vector2d operator *(double factor, Vector2d a);

实际上只有两个功能:第一个是和矩阵的乘积,和TransformBy()方法一样的效果;第二个和第三个是和数的乘积,因为2*vv*2虽然我们知道是可交换的,但是程序并不能这么聪明,所以该运算符需要重载。

  评论这张
 
阅读(1525)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017