马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
http://379910987.blog.163.com/blog/static/3352379720110452953746/?suggestedreading&wumii
AutoCAD.NET中的点、向量和矩阵(二)
二维向量 二维向量和和二维点的构造方法完全相同,前面已经说过,对于数对(100,200),在不知道行为之前,我们不能区分它到底是一个向量还是一个点,因此,他们在计算机中的构造是一样的,只是在具体的行为上有些不同。 先介绍一下向量的基本知识,假设有向量: 向量的长度:
向量的相等 向量只要方向和长度相同,即为相等,不管起点和终点在何处,两个相等的向量如下:
向量的和差运算 几何意义如下:
数学运算方法如下:
向量的数乘 几何意义是将该向量的长度放大或缩小给定的倍数,如下: 数学运算如下:
两个向量的点积:
两个向量的叉积:
注意两个向量的叉积是一个新向量。 AutoCAD中二维向量的属性和方法如下表: 属性或方法 | | | | | | | | | | | | | | | 返回一个二维向量,该向量的X和Y分量是原向量X和Y分量同时除以一个实数值后的结果 | | | | | | | | | | | | | | | | | | | | | | | | 和DivideBy()方法相反,返回一个二维向量,该向量的X和Y分量是原向量X和Y分量同时乘以一个实数值后的结果 | | | | | | 和Add()方法相反,返回本向量和给定向量的差向量 | | 返回一个double[]数组,该向量的X分量下标为0,Y分量下标为1 | | | | 该方法传递一个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*v和 v*2虽然我们知道是可交换的,但是程序并不能这么聪明,所以该运算符需要重载。
|