我正在创建一个交互式的家谱创建器,与更简单的谱系图/树不同。
我的要求(基于familyecho.com)是:
- 多个配偶而不仅仅是通常看到的两个父母和一个孩子。 - 多个兄弟姐妹 - 配偶不一定需要有孩子 - 不一定总是有一个父母“对”,可能只有单身父亲/母亲
我遇到的问题是:我基于“当前”节点/家庭成员生成偏移量时,当我超过第一代时,例如有2个父母,它们会重叠。
以下是重叠以及配偶未在相同X轴上绘制的示例: 这里是我遇到问题的实际应用程序和主要js文件,这里还有一个简化的jsfiddle,演示了父/偏移问题,虽然我真的需要解决重叠问题总体而言,并确保合作伙伴与其他合作伙伴在同一x轴上绘制。
我该如何解决当前和可能出现的重叠冲突?我需要一种检测碰撞并在检测到时调整每个块的偏移量的重新绘制函数吗?我试图使其无缝,因此只进行有限的重新绘制。
计算相对于“上下文”或当前节点的偏移量的示例:
我的要求(基于familyecho.com)是:
- 多个配偶而不仅仅是通常看到的两个父母和一个孩子。 - 多个兄弟姐妹 - 配偶不一定需要有孩子 - 不一定总是有一个父母“对”,可能只有单身父亲/母亲
我遇到的问题是:我基于“当前”节点/家庭成员生成偏移量时,当我超过第一代时,例如有2个父母,它们会重叠。
以下是重叠以及配偶未在相同X轴上绘制的示例: 这里是我遇到问题的实际应用程序和主要js文件,这里还有一个简化的jsfiddle,演示了父/偏移问题,虽然我真的需要解决重叠问题总体而言,并确保合作伙伴与其他合作伙伴在同一x轴上绘制。
我该如何解决当前和可能出现的重叠冲突?我需要一种检测碰撞并在检测到时调整每个块的偏移量的重新绘制函数吗?我试图使其无缝,因此只进行有限的重新绘制。
计算相对于“上下文”或当前节点的偏移量的示例:
var offset = getCurrentNodeOffset();
if ( relationship == RELATIONSHIPS.PARTNER ) {
var t = offset.top; // same level
var l = offset.left + ( blockWidth + 25 );
} else {
var t = offset.top - (blockHeight + 123 ); // higher
var l = offset.left - ( blockWidth - 25 );
}