【问题标题】:Draw padding for convex hull java为凸包java绘制填充
【发布时间】:2018-06-20 07:57:20
【问题描述】:

我已经得到了定义凸包的点集。如何向它们添加一种填充,以便所有点都在里面?我正在尝试画红线

【问题讨论】:

    标签: java convex-hull


    【解决方案1】:

    我想创建一个从多边形偏移距离 d:

    的轮廓
    • 考虑每对连续点(原始凸包)之间的直线段。
    • 将每个线段沿其与外部的垂直线偏移 d。偏移的段在末端之间有间隙。
    • 对于每对连续的偏移线段,添加一个圆的线段,使其两条线段都是它的切线;它的半径应该是d。很容易做到:在两个线段的末端画垂直线;它们的交点是圆心。

    现在您有一系列穿插的直线和圆弧。它应该是您正在寻找的大纲。

    为了舒适地工作,您需要以下功能:

    • 通过两点找到直线的equation(将其存储为具有3个浮点字段的对象);
    • 通过线方程和点求一条垂线方程;
    • 在给定方程的情况下,找到两条线的intersection 的点。

    【讨论】:

    • 在第2步中,如何找到正或负偏移指向“外部”?
    • 你有一个凸的外壳。相对于两个连续点之间的线段,其中的任何其他点都位于内部方向。此外,许多算法以特定顺序生成点,因此封闭区域始终位于线段的左侧(或始终位于右侧)。
    猜你喜欢
    • 2014-10-14
    • 1970-01-01
    • 2015-06-01
    • 2019-10-05
    • 2021-05-13
    • 2011-08-04
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多