【问题标题】:Drawing path without overlaying existing shapes?绘制路径而不覆盖现有形状?
【发布时间】:2011-10-12 08:21:05
【问题描述】:

需要帮助..

我有一个组织布局,其矩形形状不在有序网格中。如果是网格,我会使用 A-star 代码。那么,如何在不干扰节点(矩形)之间的情况下连接两个节点(即两个矩形)。

我只想让算法找到将绘制路径的坐标,以便我可以使用它来生成 SVG 文件。

【问题讨论】:

    标签: java layout svg overlay path-finding


    【解决方案1】:

    我遵循的算法-

    1. 存储所有矩形的边坐标,即左边, 右、上、下四个数据集。
    2. 沿着从 RectangleA 上的点到 RectangleB 上的点的路径。
    3. 找到与路径相交的第一条边(根据坐标计算找到不可能与路径相交的倾斜边,并在寻找相交边时将其消除)。
    4. 找到第一个交点后,从 PointA 到 PointB 的路径更改为 PointA 到 Point of intersection,并沿着相交的边生成的路径从那里到 B 点。
    5. 重复点 3 n 4 直到点 B 的路径完成且不与任何边相交。

    我实现了这个算法,即使它没有给出确切的最短路径。这提供了很好的输出。如果有人要求,我想分享 java 代码,因为我很难解释我是如何通过上述几点实现的。

    【讨论】:

    • 要获得最短路径,您应该构建一个图,其中节点将是 Rectangle 的边。然后连接彼此可见范围内的节点并存储每条连接线的长度。将起点和终点添加到此图后,您可以在其上运行 A* 代码。
    猜你喜欢
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 2017-01-03
    相关资源
    最近更新 更多