【问题标题】:Draw padding for convex hull java为凸包java绘制填充 【发布时间】:2018-06-20 07:57:20 【问题描述】: 我已经得到了定义凸包的点集。如何向它们添加一种填充,以便所有点都在里面?我正在尝试画红线 【问题讨论】: 标签: java convex-hull 【解决方案1】: 我想创建一个从多边形偏移距离 d: 的轮廓 考虑每对连续点(原始凸包)之间的直线段。 将每个线段沿其与外部的垂直线偏移 d。偏移的段在末端之间有间隙。 对于每对连续的偏移线段,添加一个圆的线段,使其两条线段都是它的切线;它的半径应该是d。很容易做到:在两个线段的末端画垂直线;它们的交点是圆心。 现在您有一系列穿插的直线和圆弧。它应该是您正在寻找的大纲。 为了舒适地工作,您需要以下功能: 通过两点找到直线的equation(将其存储为具有3个浮点字段的对象); 通过线方程和点求一条垂线方程; 在给定方程的情况下,找到两条线的intersection 的点。 【讨论】: 在第2步中,如何找到正或负偏移指向“外部”? 你有一个凸的外壳。相对于两个连续点之间的线段,其中的任何其他点都位于内部方向。此外,许多算法以特定顺序生成点,因此封闭区域始终位于线段的左侧(或始终位于右侧)。