在我的Silverlight 3应用程序中,我显示了一棵树。自制用户控件用于treenode,LineArrow对象用于连接。在初始显示树之后,我希望节点按以下“物理属性”移动
当然,我的用户控件很快就会重叠。但我不希望它们重叠。在物理学术语中,我希望它们是固体物体,并强制执行物理规则,即没有2个物体可以居住在同一个空间中。
有任何建议如何解决这个问题?我不想为此使用像farseer这样的物理引擎,因为所描述的部分是我项目中唯一使用的物理。
提前致谢,
弗兰克
答案 0 :(得分:0)
你控制的是方形吗?或者你可以生成边界框?如果是这样,您可以为每个创建一个System.Windows.Rect结构,并使用Rect.Insersect方法测试交集。
答案 1 :(得分:0)
只需在它们重叠时在它们之间添加一个非常大的力,就可以将它们建模为“几乎坚固”的物体。计算中心向量,对其进行标准化,可以乘以重叠,然后将其作为力施加到每个对象上。
即使你没有使用完整的Farseer库,你仍然可以在其中找到一些有用的类,如Vector2
。