为凸壳java绘制填充

时间:2018-01-11 03:38:31

标签: java convex-hull

我已经获得了定义凸包的点集。我怎样才能为它们添加一种填充,以便所有的点都在里面?我想画红线

enter image description here

1 个答案:

答案 0 :(得分:0)

我尝试创建一个通过距离偏离多边形的轮廓 d:

  • 考虑每对连续点(原始凸包)之间的直线段。
  • d 沿着与外界垂直的方向偏移每个线段。偏移的段在两端之间具有间隙。
  • 对于每对连续的偏移线段,添加一个圆的一段,使其两个线段都是其切线;它的半径应该是 d 。它很容易做到:在两个部分的末端绘制垂线;他们的交叉点是圆圈的中心。

现在你有一系列散布的直线和弧线。它应该是你正在寻找的大纲。

为了舒适地工作,您需要这些功能:

  • 通过两点找出直线的equation(将其存储为具有3个浮点字段的对象);
  • 通过线方程和点找出垂直线的方程;
  • 根据方程式找出两条线intersection的点。