@ crystaldesign/planner-2d-core (英语)
2D规划器的无浏览器核心: 第SVG条解析,对接逻辑,码头转换数学和相撞几何. 没有织物.js,没有引擎,没有目录 API——在浏览器和平地节点运行(后端服务,单位测试,代理测试床).
采掘概念和阶段计划: docs/2d -- -- 规划人员 -- -- 重新工作/国家环境保护委员会。 。 。 .
移植逻辑是一种行为诚实的提取 web-planner-logic是因为 DockingPointHandler无织物
SVGUtils 方法和对接数学 DivaStandardPlanner.updateWorldPos (P1阶段——网络规划员-记录员仍保留)
携带自己的副本,直到P2将其切换到这个包.
模块
| 模块 | 目录 |
|---|---|
svg/ | getDockingPointLines, (中文(简体) ), getPolygonPoints, (中文(简体) ), getOltGeometry编号 :getOlfGeometry, (中文(简体) ), removeOlf编号 :removeMask, (中文(简体) ), getMinBorder (基于DOM,节点安全), pathBoundingBox (完整的指令集 ML H V C S Q T A Z incl.). Bezier extrema and arcs) 红外线和红外线 |
stretch/ | stretchArticleSvg ——同步的SAH/SAV拉伸引擎,行为忠实地重写后遗症 ccCheckStretchAreas (OLT-then-OLF双通,圆形规则,全局尺度模式) 有轴取出元件/路径变压器和 a warnings[] 报告; 偏差: 未知路径命令存活, 不支持的拉伸区域被忽略, 视图框缩放被精确应用一次 |
docking/ | DockingPoint, (中文(简体) ), DockingPointHandler (补偿规则, checkDPsDoMatch 公共、狭义 PlannerElement2D 接口 |
transform/ | computeDockedTransform ——对接元素的纯世界变数 |
collision/ | segmentsIntersect (结构等同),多边形相交/闭合, outlinesCollide |
testbed/ | DockingScene + 键 SimplePlannerElement —— SVG 出入口、对接点/铺设/世界位置 |
节点使用
解析器需要一个DOM. 在浏览器中不需要什么; 在节点中, jsdom窗口被懒得装入回落
(单位:千美元)configureDom(new JSDOM('').window) 仅在使用自定义 DOM 时:
import { DockingScene } from '@crystaldesign/planner-2d-core';
const scene = new DockingScene();
const sofa = scene.addArticle(sofaSvg, { layer: 20 });
const extension = scene.addArticle(extensionSvg, { layer: 20 });
const result = scene.tryDock(extension, sofa); // -> { docked, dockingType, rotDeg, worldPosCorner }
日志默认为禁用;通过 setPlanner2DLogger (例如DivaUtils/diva-后端-commons日志).
测试
ctra test @crystaldesign/planner-2d-core
套房在下面运行 testEnvironment: node 带有明确配置的jsdom——在每次运行时证明无浏览器合同.