|
@@ -0,0 +1,34 @@
|
|
|
+计算业务空间邻接关系
|
|
|
+# 函数依赖于
|
|
|
+ sp2fl
|
|
|
+# 业务空间轮廓结构
|
|
|
+```
|
|
|
+[
|
|
|
+ [
|
|
|
+ [
|
|
|
+ {点坐标},
|
|
|
+ {点坐标}...
|
|
|
+ ], // 子轮廓的外轮廓
|
|
|
+ [
|
|
|
+ {点坐标},
|
|
|
+ {点坐标}...
|
|
|
+ ], // 子轮廓的排除轮廓n
|
|
|
+ ], // 子轮廓
|
|
|
+ [
|
|
|
+ [
|
|
|
+ {点坐标},
|
|
|
+ {点坐标}...
|
|
|
+ ]
|
|
|
+ ],
|
|
|
+]
|
|
|
+```
|
|
|
+# 计算细节
|
|
|
+## 参与计算的业务空间
|
|
|
+ 1. 找到项目下所有的楼层
|
|
|
+ 2. 按照楼层, 分别找出每个楼层下的业务空间, 将一个楼层下的业务空间分组, 在一个组内计算业务空间的相邻关系
|
|
|
+## 在每个子轮廓的外轮廓的相邻两个顶点的线段上做"开门"操作
|
|
|
+
|
|
|
+ 1. 在线段长度大于等于一个门宽度的时候, 虚拟的在这个线段的两端分别各安装一扇门, 在门打开的过程中(两边都能打开), 扫过的面积如果跟其他空间(比如空间A)的面积有重叠时,
|
|
|
+ 则认为这个空间与空间A相邻, 依次找出所有与该空间相邻的空间.
|
|
|
+ 2. 在线段长度不超过一个门的宽度时, 将继续寻找下一个点, 直到长度大于等于一个门的宽度时, 执行1
|
|
|
+ 将此过程应用到所有空间上, 找出所有业务空间的相邻关系
|