计算方法与核心概念定义
SPACEFIT 的八个核心概念、输入参数与单位规则、门洞与房间检查、可复现计算示例,以及本次评估的适用边界。
本工具实际使用的八个术语
以下每条定义都描述当前代码的实际行为。两种语言均保留英文术语,便于无歧义地引用同一概念。
- 家具尺寸Furniture Dimensions
一件家具的三个正交方向尺寸:长、宽、高。SPACEFIT 以毫米为唯一规范单位存储并使用这三个值,把家具当作长方体处理;不建模桌腿、扶手、把手、可拆部件、软包压缩以及非矩形外轮廓。
依据来源:
geometry.lengthMm,geometry.widthMm,geometry.heightMm- 门洞净空Doorway Clearance
门洞真正可通行的净开口:净宽与净高,另有可选的门框深度和可选的额外操作余量。应取最小可用开口,而不是门框外沿尺寸。门框深度缺失时按阻塞性限制如实报告,不做猜测。
依据来源:
clearWidthMm,clearHeightMm,frameDepthMm,MISSING_FRAME_DEPTH- 投影宽度Projected Width
在某一被测姿态下,家具包围盒落在门洞截面上的水平方向尺寸。它由旋转后长方体的轴对齐包围盒推导,姿态改变时该值随之改变;比较对象是门洞净宽加上设定的额外余量。
依据来源:
projectedWidthMm,remainingWidthMm- 投影高度Projected Height
在某一被测姿态下,家具包围盒落在门洞截面上的竖直方向尺寸。它与投影宽度共同构成门洞截面检查所用的矩形;长方体的进深不参与这项截面比较。
依据来源:
projectedHeightMm,remainingHeightMm,SECTION_ONLY- 包围盒Bounding Box
包住旋转后家具长方体的轴对齐外接盒。本工具的所有比较都基于该盒,而非精细网格。因此「通过」表示外接盒能通过,并不代表真实物件的每一处轮廓都能通过。
依据来源:
BOUNDING_BOX_ONLY,ORIENTATION_IDS- 家具姿态Orientation
长方体的六种轴对齐摆放姿态之一。每种姿态用一个 3×3 旋转矩阵,按 Rz、Ry、Rx 的顺序组合;包围盒由该矩阵取绝对值后乘以本地尺寸向量得到。不搜索连续角度或任意角度。
依据来源:
Rz,Ry,Rx,AXIS_ALIGNED_POSES_ONLY- 房间空间余量Room Clearance
把某一姿态下的家具体积与用户给出的矩形房间(宽、长、高)做静态体积比较。它只说明该姿态下盒子能否放进房间体积,不检查门的位置、搬入路线或最终摆放位置。
依据来源:
STATIC_VOLUME_ONLY,ROOM_PATH_NOT_MODELLED- 碰撞检测Collision Detection
基于轴对齐盒体六个真实面计算的重叠与间隙检查:所需尺寸与可用尺寸、剩余余量与超出量。零间隙的贴面接触会作为边界情况显式报告,不会被静默忽略。这是几何重叠判定,不是搬运路径仿真。
依据来源:
dimensionComparisons,ZERO_CLEARANCE,PATH_NOT_MODELLED
计算是如何进行的
公开说明输入参数、单位规则、姿态处理、门洞截面、余量判定,以及本次评估不覆盖的场景。列出的限制码与引擎输出的限制码一致。
使用哪些输入参数
家具的长、宽、高;门洞净宽、净高与可选的门框深度;房间的宽、长、高;可选的额外操作余量;所选姿态;以及显示单位。
确实未知的门框深度存为 null,引擎据此把 MISSING_FRAME_DEPTH 作为阻塞性限制上报,总体结论变为有条件(CONDITIONAL),不会编造数值补齐。非法数值输入返回结构化的 INVALID_INPUT 失败,而不是伪造一个适配结果。
代码中对应标识: clearWidthMm · frameDepthMm · MISSING_FRAME_DEPTH · INVALID_INPUT
内部如何统一单位
计算过程中以毫米为唯一规范单位。英寸和英尺按精确换算关系 1 in = 25.4 mm、1 ft = 304.8 mm 转入毫米,换算过程不做四舍五入。
3D 场景只在渲染时把毫米转换为米。尺寸输入解析会拒绝千分位、后缀、NaN、零值和负数,而不是悄悄把它们转换掉。
代码中对应标识: MM_PER_UNIT · toMillimetres · millimetresToMetres
如何处理家具姿态
共测试六种轴对齐姿态。每种姿态应用 3×3 旋转矩阵,组合顺序为 Rz、Ry、Rx;轴对齐包围盒由 |R| 乘以本地尺寸向量得到,投影宽度与投影高度均从该盒读取。
只测试这六种姿态,不做连续角度搜索。因此位于这些姿态之间、理论上可能通过的摆放方式,不在本工具回答的范围之内。
代码中对应标识: ORIENTATION_IDS · AXIS_ALIGNED_POSES_ONLY · projectedWidthMm
如何计算门洞截面
门洞检查是仅截面的比较:把投影宽度与投影高度构成的矩形,与净开口加上设定的额外操作余量进行比较。家具沿通行方向的进深不参与这项截面测试。
门扇及其开启方向、五金件、门槛与障碍物均未建模;门框深度方向的旋转以及真实搬运路径同样未建模。每一项限制都会在引擎结果中以具名限制码输出。
代码中对应标识: SECTION_ONLY · PATH_NOT_MODELLED · DOOR_LEAF_AND_OBSTACLES_NOT_MODELLED · FRAME_DEPTH_ROTATION_NOT_MODELLED
如何判断空间余量
每一项比较都输出 requiredMm、availableMm 与 remainingMm,其中剩余量等于可用量减去所需量。这些数值来自真实盒体的六个面,不是从 3D 拖拽控件所用的钳制界限反推。
门洞检查与房间检查保持分开。任一局部检查失败即为 FAIL;任一有条件结果、任一阻塞性限制,或不存在同时满足两项检查的单一姿态,结论为 CONDITIONAL;否则为 PASS。界面只渲染同一引擎结果里的 overallStatus 与 verdictReasons。
代码中对应标识: dimensionComparisons · NO_SINGLE_POSE_FITS_BOTH · overallStatus · verdictReasons
哪些场景尚未支持
连续角度旋转、搬运路线、在走廊或门洞内转身、门扇与障碍物、门框深度方向的旋转、房间内挪动以及最终摆放位置,都不在本次评估范围内。门洞与房间结果都是明确限定范围的静态判断,不是运动仿真。
3D 工具中的拖拽交互仅用于静态位置评估:移动家具会改变可视化反馈,但不会改写总体适配结论。该范围在工具页与引擎结果中均有披露。
代码中对应标识: AXIS_ALIGNED_POSES_ONLY · PATH_NOT_MODELLED · ROOM_PATH_NOT_MODELLED · STATIC_POSITION_ONLY
五个不是同一个问题的问题
门洞尺寸比较、某个姿态下的截面适配、旋转后的投影、房间容积、真实搬运路线——这是五个不同的问题。SPACEFIT 回答前四个(完整或部分),并明确拒绝第五个。
| 问题 | 状态 | 引擎做了什么 | 它不能证明什么 |
|---|---|---|---|
01家具尺寸是否小于门洞尺寸?dimensionComparisonsclearWidthclearHeight | 已回答 | 把家具宽高与净开口宽高直接相减,给出毫米级原始差值。 | 只能说明两个数比另外两个数小,不能说明倾斜或旋转后能不能过。 |
02特定受限姿态下的截面是否适配?sectionStatusOrientationIdSECTION_ONLY | 已回答 | 逐个测试六种轴对齐姿态,给出每种姿态下投影截面是否落在净开口内。 | 某个姿态下的截面能过;物件仍然需要以这个姿态被搬到门口。 |
03旋转后的投影尺寸是多少?rotatedBoxAabbprojectOrientationrotationMatrixXYZ | 已回答 | 用 |R| · h 矩阵精确求旋转后长方体的轴对齐包围盒,四分之一转与任意偏航角用同一个公式。 | 需要通过该平面的盒体尺寸;它既不是家具表面尺寸,也不是扫掠体积。 |
04房间空间是否容纳家具?analyzeRoomSTATIC_VOLUME_ONLYROOM_PATH_NOT_MODELLED | 部分回答 | 把定向包围盒与静态长方体房间在宽、长、高三个方向比较,给出每个方向的剩余量。 | 静态体积比较;把物件在房间里挪到位、原地转身、开门让位都没有模拟。 |
05完整真实搬运路径是否可行?PATH_NOT_MODELLEDDOOR_LEAF_AND_OBSTACLES_NOT_MODELLEDCONDITIONAL | 不回答 | 不做任何计算。路线、楼梯、转角、走廊与门扇均未建模,因此引擎返回 CONDITIONAL 并列出缺失的证据。 | 这是本产品不回答的问题。在这里给出路径结论,会是它可能犯下的最严重的夸大。 |
最后一行就是产品的边界。门洞计算不能被拉伸成搬运路线计算,本页也不做这种拉伸。
PASS / CONDITIONAL / FAIL 是怎么产生的
结论不是界面挑的。两项局部检查按固定顺序合并,任何阻断性限制都会在兜底之前把结果降级。
- FAIL
任一局部检查返回 FAIL。
没有任何受测姿态能通过该项检查,因此也不可能有姿态通过全部检查。界面会给出阻断方向与超出毫米数。
sectionStatusroomFitStatus - CONDITIONAL
任一局部检查为 CONDITIONAL,或没有单一姿态同时满足门洞与房间,或存在阻断性限制。
现有数据无法判定。结论会说明每项检查需要哪个姿态、缺的是哪一类证据。
NO_SINGLE_POSE_FITS_BOTHREQUIRES_POSE_CHANGE - PASS
所有受测检查都在要求的操作余量下通过,且至少存在一种姿态同时满足门洞与房间。
这是引擎能给出的最强结论;它仍然不声称真实搬运路线存在。
overallStatusverdictReasons
当前版本不模拟什么
下列每一项都在模型之外。任何一条 PASS 都不隐含它们,也没有一项被悄悄近似处理。
已建模
- 具有三个正交尺寸的长方体
- 六种轴对齐姿态,每种都有精确的旋转包围盒
- 矩形门洞截面:净宽与净高
- 三个方向上的静态长方体房间容积
未建模
- 楼梯与高差门洞截面能过,不代表楼梯转角或平台能过。
- 走廊、转角与拐弯长物件通过 90° 转角时的扫掠体积没有计算。
- 门扇、开合方向与门框内缩门打开后会占掉可用开口;模型只按净开口计算。
- 把手、旋钮与外凸五金一个把手就可能让真实投影宽度多出几十毫米。
- 踢脚线、暖气片与固定障碍任何让真实通道变窄的固定物都不在模型里。
- 非矩形轮廓、支腿与扶手物件按长方体处理;异形沙发按外包盒测量。
- 软包压缩与形变可弯折的床垫按刚体长方体计算,结果偏保守。
- 连续角度姿态只测试六种轴对齐姿态,不搜索任意角度。
如果真实决策依赖右栏中的任何一项,诚实的回答是:这个工具目前还判断不了。
一个实时计算的示例
正文只提供输入数值。结论与各比较行在每次渲染时,由计算器使用的同一个 analyzeFurnitureFit() 入口生成。
输入数据
| 物品 | 示例柜体 |
|---|---|
| 长 | 1200 mm |
| 宽 | 700 mm |
| 高 | 1900 mm |
| 门洞净宽 | 800 mm |
| 门洞净高 | 2050 mm |
| 门框深度 | 120 mm |
| 房间宽 | 3200 mm |
| 房间长 | 4000 mm |
| 房间高 | 2600 mm |
| 额外余量 | 0 mm |
| 选定姿态 | 直立 |
单位
以下所有数值的规范单位均为毫米(mm)。
计算过程
- 01把所有输入尺寸换算为规范单位毫米;本例中的数值本身已是毫米。
- 02对所选的直立(upright)姿态,按 Rz、Ry、Rx 顺序组合旋转矩阵,求轴对齐包围盒。
- 03从该包围盒读取投影宽度与投影高度,与 800 mm × 2050 mm 的净开口比较。
- 04把同一个包围盒与 3200 mm × 4000 mm × 2600 mm 的房间做静态体积比较。
- 05从下方引擎结果读取结论与各比较行;以上步骤中没有任何数字充当结论。
输出结果(引擎实时结果)
由当前引擎在渲染时计算;正文中不复制任何结论。
| 比较项 | 所需 (mm) | 可用 (mm) | 剩余 (mm) |
|---|---|---|---|
| 门洞净宽 | 700 | 800 | 100 |
| 门洞净高 | 1900 | 2050 | 150 |
| 房间宽度 | 700 | 3200 | 2500 |
| 房间长度 | 1200 | 4000 | 2800 |
| 房间层高 | 1900 | 2600 | 700 |
计算方法版本 2.0.0
适用范围
适用于长方体物件、六种轴对齐姿态之一、矩形门洞截面与矩形房间,且所有尺寸均以毫米提供。
限制条件
- 未建模搬运路线、门扇与转身空间(PATH_NOT_MODELLED)。
- 仅测试六种轴对齐姿态,不搜索连续角度(AXIS_ALIGNED_POSES_ONLY)。
- 房间结果是静态体积比较,不检查房间内挪动(ROOM_PATH_NOT_MODELLED)。
07 / 维护信息
日期、责任与版本
- 发布日期
- 更新日期
- 计算方法版本
- 2.0.0
- 作者说明
- 无单独署名作者;内容与本仓库代码一同维护。
- 内容维护责任
- 本页内容与本仓库中的计算引擎一同维护。几何或结论逻辑一旦变更,必须在同一次变更中同步更新已发布的方法说明及其自动检查。不存在单独署名的编辑团队,也没有外部审核方。
08 / 可信度
本页内容的依据
- 01
本页不宣称专家署名、专业资质、实验室测试、认证或企业背书;本项目不存在这些信息。
- 02
本页的定义、单位、限制码与计算版本描述的是本仓库中的代码。可复现示例在页面渲染时由计算器所使用的同一个 analyzeFurnitureFit() 入口实时计算。
- 03
目前可提供的验证证据是自动化单元测试、生产 HTML 断言与真实浏览器检查。本页不宣称任何实测 Core Web Vitals、搜索排名、流量数据或第三方审计结果。
- 04
清晰的定义与公开的范围边界可能有助于 AI 搜索系统理解内容,但不承诺获得 AI 引用、排名或富媒体展示。