二维代数几何原理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
第一章矢量代数 (3)
1.1 二维矢量 (3)
1.1.1 矢量表示 (3)
1.1.2 矢量长度 (3)
1.1.3 单位矢量 (3)
1.1.4 矢量数乘 (3)
1.1.5 矢量点乘 (3)
1.1.6 矢量叉乘 (3)
1.1.7 正交矢量 (4)
1.1.8 矢量角度 (4)
1.2 矢量点乘和叉乘的应用 (4)
1.2.1 矢量夹角 (4)
1.2.2 矢量旋转方向 (4)
1.2.3 判断平行 (5)
1.2.4 判断同向 (5)
1.2.5 判断反向 (5)
1.2.6 判断垂直 (5)
1.2.7 正交投影 (6)
1.2.8 矢量分解 (6)
1.3 二维点 (6)
1.3.1 点的表示 (6)
1.3.2 矢量运算 (7)
1.3.3 距离和角度 (7)
1.3.4 极坐标 (7)
1.3.5 移动直尺法 (7)
1.4 二维齐次变换 (7)
1.4.1 齐次变换矩阵 (7)
1.4.2 坐标变换 (7)
1.4.3 矢量变换 (8)
1.4.4 角度变换 (8)
1.4.5 平移变换 (8)
1.4.6 比例变换 (8)
1.4.7 旋转变换 (9)
1.4.8 对称变换 (10)
1.4.9 行列式值 (11)
1.4.10 矩阵求逆 (11)
1.4.11 正投影变换的分解 (11)
1.5 仿射坐标系 (12)
1.5.1 仿射坐标 (12)
1.5.2 仿射坐标系的矩阵表示 (12)
1.5.3 坐标变换 (12)
1.5.4 坐标系映射 (12)
第二章参数化曲线 (13)
2.1 直线 (13)
2.1.1 无穷直线 (13)
2.1.2 直线段 (13)
2.1.3 射线 (13)
2.1.4 中垂线 (13)
2.1.5 直线的一般式方程 (14)
2.2 圆弧 (14)
2.2.1 圆弧方程 (14)
2.2.2 圆的切线 (14)
2.3 椭圆 (14)
2.3.1 椭圆弧方程 (14)
2.3.2 椭圆的二次曲线方程形式 (15)
2.3.3 椭圆的切线 (15)
2.4 折线 (16)
2.5 三次参数样条曲线 (16)
2.5.1 三次参数曲线方程 (16)
2.5.2 三次参数样条函数的连续方程组 (17)
2.5.3 端点条件 (17)
2.5.4 累加弦长三次参数样条曲线 (18)
2.6 二次参数样条曲线 (18)
二维代数几何原理
作者:张云贵 2004年4月
本文说明数学几何库中用到的二维代数几何计算原理。
第一章矢量代数
1.1 二维矢量
1.1.1 矢量表示
矢量的坐标表示为V= (x, y),其中x和y为坐标分量。
1.1.2 矢量长度
|V| = sqrt(x*x + y*y)
1.1.3 单位矢量
E = V / |V|
1.1.4 矢量数乘
矢量V(x, y)和实数n的数量积为:
n*V = V*n = ( x * n, y * n )
V / n = ( x / n, y / n )
1.1.5 矢量点乘
两个矢量A(x1, y1)和B(x2, y2)的点积为:
A·B = x1 * x2 + y1 * y2
性质:
A·B = B·A
A·(B+C) = A·B + A·C
几何意义:A·B可以看作|A|乘以B在A上的投影的长度。若A和B为非零矢量,(1)如果A·B>0,则A和B同在一侧,夹角小于90度;(2)如果A·B<0,则A和B夹角大于90度;(3)如果A·B=0,则A⊥B。
1.1.6 矢量叉乘
两个三维矢量A(x1, y1, z1)和B(x2, y2, z2)的叉积为:
A×B = (y1*z2 – z1*y2, z1*x2 – x1*z2, x1*y2 – y1*x2)
取z=0可得到二维矢量A(x1, y1)和B(x2, y2)的叉积(0, 0, z)的Z分量为:
(A×B)z = x1 * y2 – y1 * x2
性质:
A×B = -B×A
(A+B)×C = A×C + B×C
几何意义:A×B垂直于A和B,且A,B,A×B构成右手系,A×B的矢量长度为以A和B为邻边的平行四边形的面积。(A×B)z可以看作|A|乘以B在A上的垂直投影的长度。
若A和B为非零矢量,(1)如果(A×B)z>0,则B在A的逆时针方向;(2)如果(A×B)z<0,则B在A的顺时针方向;(3)如果(A×B)z=0,则A∥B。
1.1.7 正交矢量
沿逆时针方向旋转90度得到矢量V(x, y)的正交矢量:(-y, x)。
沿顺时针方向旋转90度得到的正交矢量为(y, -x)。
1.1.8 矢量角度
矢量V(x, y)的角度定义为从坐标系X轴正向旋转到矢量V所转过的角度,逆时针时为正,顺时针为负。矢量角度为:
angle = acos(x / |V|),得到的角度范围为0到π
angle = asin(y / |V|),得到的角度范围为-π/2到π/2
angle = atan(y / x),得到的角度范围为-π/2到π/2
angle = atan2(y, x),得到的角度范围为-π到π
规定零矢量的角度为0。
1.2 矢量点乘和叉乘的应用
1.2.1 矢量夹角
矢量A(x1, y1)和B(x2, y2)的夹角定义为从矢量A旋转到矢量B所转过的角度,逆时针时为正,顺时针为负。矢量夹角的计算如下:
sin(angle) = (A×B)z / (|A|*|B|)
cos(angle) = (A·B) / (|A|*|B|)
tan(angle) = (A×B)z / (A·B)
得到:
angle = acos((x1 * x2 + y1 * y2) / (|A|*|B|))
angle = asin((x1 * y2 – y1 * x2) / (|A|*|B|))
angle = atan2(x1 * y2 – y1 * x2, x1 * x2 + y1 * y2)
规定零矢量和其它矢量的夹角为0度。
1.2.2 矢量旋转方向
要判断矢量A旋转到矢量B旋转角最小时,是逆时针转还是顺时针转,可以这样判断:如果(A×B)z>0则是逆时针转,如果(A×B)z<0则是顺时针转。