Files
FamilyBook/templates/kin
laoyang e22202271a v20: 家谱布局推倒重写为区间法(tidy tree)—— 一次成型,无多轮推挤修补
用户反馈:"错的更离谱了,这次连位置都不对了"(v19 实测"我"跑到离父母 800px 的最右侧)。

根因:v18/v19 是「游标铺放 → 防重叠 → 同代重排 → 再防重叠 → 再硬推」
叠了四五层修补,每一层都在破坏上一层的"父居中于子女",多轮互相拉扯后整棵树漂移。

区间法规则(一次成型,天然不叠卡):
  ① 每棵户子树自底向上算需求宽度 needW = max(自身宽, Σ子女宽 + 间距);
  ② 自顶向下分配互不重叠的 x 区间,子女依次铺在父区间内;
  ③ 父户居中于子女的实际跨度。
跨树边(岳父母户也把妻子列为子女)只走「主父户」进树递归
(主位卡是我方血亲的那个父户,服务端给每张卡标 blood),
其余父户只留给画线段 —— 岳父母的子女横梁照样连到妻子,布局不重复铺人。

验证(20 人夹具 + 真实渲染):
  · 版面五判据 A-E 全过(8/8):不重叠 / 线在卡后 / 下垂线从夫妻横线中点出 /
    同代有空隙 / 横线在两卡缝隙;行分布:兄姐弟妹紧贴我、堂表在伯父下方、
    岳父母贴妻子右上、外甥在舅子下方;
  · 连线完整性:该连上一代的卡 0 缺线、悬空竖线 0 段;
  · 反向验证 3/3:注入坏法(下垂线从左卡出 / needW 砍半 / 中点取左卡)全部变红。
2026-10-02 17:35:27 +08:00
..