找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2373|回复: 0

[分享] AutoCAD.NET中的点、向量和矩阵(二)

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-21 16:41:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
http://379910987.blog.163.com/blog/static/3352379720110452953746/?suggestedreading&wumii

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


二维向量
       二维向量和和二维点的构造方法完全相同,前面已经说过,对于数对(100,200),在不知道行为之前,我们不能区分它到底是一个向量还是一个点,因此,他们在计算机中的构造是一样的,只是在具体的行为上有些不同。
先介绍一下向量的基本知识,假设有向量:
0.jpg
向量的长度:
1.jpg
向量的相等
向量只要方向和长度相同,即为相等,不管起点和终点在何处,两个相等的向量如下:
2.jpg

向量的和差运算
几何意义如下:
3.jpg

数学运算方法如下:
4.jpg

向量的数乘
几何意义是将该向量的长度放大或缩小给定的倍数,如下:
5.jpg
数学运算如下:

6.jpg

两个向量的点积:

7.jpg

两个向量的叉积:

8.jpg

注意两个向量的叉积是一个新向量。
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()
返回包含该向量信息的字符串
该方法传递一个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虽然我们知道是可交换的,但是程序并不能这么聪明,所以该运算符需要重载。

评分

参与人数 1D豆 +3 收起 理由
ScmTools + 3 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-18 23:57 , Processed in 0.444994 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表