导航菜单
方法说明

计算方法与核心概念定义

SPACEFIT 的八个核心概念、输入参数与单位规则、门洞与房间检查、可复现计算示例,以及本次评估的适用边界。

01 / 核心概念

本工具实际使用的八个术语

以下每条定义都描述当前代码的实际行为。两种语言均保留英文术语,便于无歧义地引用同一概念。

家具尺寸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

轴测图:1200 x 700 x 1900 mm 的家具外包络盒,沿三条轴标注 L、D、H 尺寸箭头,并带 X/Y/Z 轴标记。
图 01 - 三个尺寸取自外包络盒,不是家具内部可用空间。
02 / 计算方法

计算是如何进行的

公开说明输入参数、单位规则、姿态处理、门洞截面、余量判定,以及本次评估不覆盖的场景。列出的限制码与引擎输出的限制码一致。

使用哪些输入参数

家具的长、宽、高;门洞净宽、净高与可选的门框深度;房间的宽、长、高;可选的额外操作余量;所选姿态;以及显示单位。

确实未知的门框深度存为 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

三种轴对齐家具姿态,各带虚线 AABB 外框与投影宽度 W1、W2、W3,下方为公式 AABB = |R| h。
图 03 - 家具本身尺寸不变,旋转会改变轴对齐包围盒的投影宽度。
门洞 A-A 俯视截面:两侧墙体、800 mm 开口、700 mm 宽的家具矩形、门框深度 d = 120 mm 及 SECTION_ONLY 标识。
图 04 - 门洞只按截面评估,通往门洞的路径并未建模。
五步流程:以 mm 为单位的 W/H/D 输入,经六种旋转 |R| h、AABB 投影、与 Wc/Hc 比较,得到 PASS、CONDITIONAL 或 FAIL,并列出真实状态合并规则与限制码。
图 07 - 任一 FAIL 即 FAIL;任一 CONDITIONAL 或阻断性限制即 CONDITIONAL;否则 PASS。
03 / 回答的边界

五个不是同一个问题的问题

门洞尺寸比较、某个姿态下的截面适配、旋转后的投影、房间容积、真实搬运路线——这是五个不同的问题。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 并列出缺失的证据。这是本产品不回答的问题。在这里给出路径结论,会是它可能犯下的最严重的夸大。

最后一行就是产品的边界。门洞计算不能被拉伸成搬运路线计算,本页也不做这种拉伸。

04 / 结论规则

PASS / CONDITIONAL / FAIL 是怎么产生的

结论不是界面挑的。两项局部检查按固定顺序合并,任何阻断性限制都会在兜底之前把结果降级。

任一局部检查 FAILFAILCONDITIONAL、无共同可行姿态,或存在阻断性限制CONDITIONAL其余情况PASS
deriveOverallStatus() 使用的合并顺序:先 FAIL,再 CONDITIONAL,其余为 PASS。
  1. FAIL

    任一局部检查返回 FAIL。

    没有任何受测姿态能通过该项检查,因此也不可能有姿态通过全部检查。界面会给出阻断方向与超出毫米数。

    sectionStatusroomFitStatus

  2. CONDITIONAL

    任一局部检查为 CONDITIONAL,或没有单一姿态同时满足门洞与房间,或存在阻断性限制。

    现有数据无法判定。结论会说明每项检查需要哪个姿态、缺的是哪一类证据。

    NO_SINGLE_POSE_FITS_BOTHREQUIRES_POSE_CHANGE

  3. PASS

    所有受测检查都在要求的操作余量下通过,且至少存在一种姿态同时满足门洞与房间。

    这是引擎能给出的最强结论;它仍然不声称真实搬运路线存在。

    overallStatusverdictReasons

05 / 计算边界

当前版本不模拟什么

下列每一项都在模型之外。任何一条 PASS 都不隐含它们,也没有一项被悄悄近似处理。

已建模

  • 具有三个正交尺寸的长方体
  • 六种轴对齐姿态,每种都有精确的旋转包围盒
  • 矩形门洞截面:净宽与净高
  • 三个方向上的静态长方体房间容积

未建模

  • 楼梯与高差门洞截面能过,不代表楼梯转角或平台能过。
  • 走廊、转角与拐弯长物件通过 90° 转角时的扫掠体积没有计算。
  • 门扇、开合方向与门框内缩门打开后会占掉可用开口;模型只按净开口计算。
  • 把手、旋钮与外凸五金一个把手就可能让真实投影宽度多出几十毫米。
  • 踢脚线、暖气片与固定障碍任何让真实通道变窄的固定物都不在模型里。
  • 非矩形轮廓、支腿与扶手物件按长方体处理;异形沙发按外包盒测量。
  • 软包压缩与形变可弯折的床垫按刚体长方体计算,结果偏保守。
  • 连续角度姿态只测试六种轴对齐姿态,不搜索任意角度。

如果真实决策依赖右栏中的任何一项,诚实的回答是:这个工具目前还判断不了。

06 / 可复现示例

一个实时计算的示例

正文只提供输入数值。结论与各比较行在每次渲染时,由计算器使用的同一个 analyzeFurnitureFit() 入口生成。

输入数据

物品示例柜体
长1200 mm
宽700 mm
高1900 mm
门洞净宽800 mm
门洞净高2050 mm
门框深度120 mm
房间宽3200 mm
房间长4000 mm
房间高2600 mm
额外余量0 mm
选定姿态直立

单位

以下所有数值的规范单位均为毫米(mm)。

计算过程

  1. 01把所有输入尺寸换算为规范单位毫米;本例中的数值本身已是毫米。
  2. 02对所选的直立(upright)姿态,按 Rz、Ry、Rx 顺序组合旋转矩阵,求轴对齐包围盒。
  3. 03从该包围盒读取投影宽度与投影高度,与 800 mm × 2050 mm 的净开口比较。
  4. 04把同一个包围盒与 3200 mm × 4000 mm × 2600 mm 的房间做静态体积比较。
  5. 05从下方引擎结果读取结论与各比较行;以上步骤中没有任何数字充当结论。

输出结果(引擎实时结果)

由当前引擎在渲染时计算;正文中不复制任何结论。

总体结论PASS所有受测检查均带操作余量通过,且存在一种姿态同时满足门洞与房间。
比较项所需 (mm)可用 (mm)剩余 (mm)
门洞净宽700800100
门洞净高19002050150
房间宽度70032002500
房间长度120040002800
房间层高19002600700

计算方法版本 2.0.0

适用范围

适用于长方体物件、六种轴对齐姿态之一、矩形门洞截面与矩形房间,且所有尺寸均以毫米提供。

限制条件

  • 未建模搬运路线、门扇与转身空间(PATH_NOT_MODELLED)。
  • 仅测试六种轴对齐姿态,不搜索连续角度(AXIS_ALIGNED_POSES_ONLY)。
  • 房间结果是静态体积比较,不检查房间内挪动(ROOM_PATH_NOT_MODELLED)。
3200 x 4000 mm 房间俯视图,中央为 1200 x 700 mm 家具占位,对角余量标记 d,并标注 STATIC_VOLUME_ONLY 与房间高度 2600 mm。
图 05 - 房间是静态体积;余量从真实 AABB 六个面计算。

07 / 维护信息

日期、责任与版本

发布日期
更新日期
计算方法版本
2.0.0
作者说明
无单独署名作者;内容与本仓库代码一同维护。
内容维护责任
本页内容与本仓库中的计算引擎一同维护。几何或结论逻辑一旦变更,必须在同一次变更中同步更新已发布的方法说明及其自动检查。不存在单独署名的编辑团队,也没有外部审核方。

08 / 可信度

本页内容的依据

  1. 01

    本页不宣称专家署名、专业资质、实验室测试、认证或企业背书;本项目不存在这些信息。

  2. 02

    本页的定义、单位、限制码与计算版本描述的是本仓库中的代码。可复现示例在页面渲染时由计算器所使用的同一个 analyzeFurnitureFit() 入口实时计算。

  3. 03

    目前可提供的验证证据是自动化单元测试、生产 HTML 断言与真实浏览器检查。本页不宣称任何实测 Core Web Vitals、搜索排名、流量数据或第三方审计结果。

  4. 04

    清晰的定义与公开的范围边界可能有助于 AI 搜索系统理解内容,但不承诺获得 AI 引用、排名或富媒体展示。

打开适配计算器