【文件属性】:
文件名称:夹角计算-python读取mat文件并转为csv文件的实例
文件大小:9.75MB
文件格式:PDF
更新时间:2021-06-10 00:01:13
算法
图6.23 夹角计算
首先,我们需要考虑边与边的夹角的计算,设函数
0 1
COMPUTE_ANGLE(e , )e 实现的功能
就是计算夹角
0 1
( , )e e ,采用等式 0 1 0 1asin e / e ee 计算出介于[ / 2, / 2] 的角度值,
如图6.23所示,如果边
0 1
,e e 同向,如图(a)(c)所示,则夹角为 ;如果不同向且 0 ,
如图(b)所示,则夹角为 ;否则,如图(d)所示,则夹角为 ( ) 。算法的伪码如
下所示:
0 1
COMPUTE_ANGLE(e , )e
1. 0 1 0 1asin e / e ee
2. if
0 1
e 0e , then
3. return ;
4. else if 0 , then
5. return ;
6. else
7. return ( ) ;
8. end if;
可以用一个双向循环链表,来存储极角坐标,此外还需要存储一个计数器,用于记录扇
区的重数,即双向循环链表中存储的节点的数据结构为{ , }angle count ,其中 angle表示极角坐
标,极角坐标的取值范围是 [0,2 ) ,count 表示扇区重数。因为我们只需要找到重数为1的扇
区,重数等于2或大于2的区域,可以统一标识为2,所以 count 的取值范围是{0,1,2}。令极角
坐标
0
0C ,并不会影响到算法的结果。
算法的基本过程如下所示:
1. 初始情况下,扇区 [0, 2 ) 的重数为0,双向循环链表为空,令
0
0C ,表示当前的极
角坐标为0;