从起点生成边界框(SVG)

时间:2015-08-17 21:23:45

标签: c# svg graphics computational-geometry bounding-box

我需要为不保证轴对齐的形状生成边界框。每个形状都有一个指向他们的前面的点。边界框应该有一个面。

简而言之,这个形状/边界框:

enter image description here

需要最终看起来像这样:

enter image description here

不幸的是,形状本身并没有随着它们的旋转而变形,它们只是简单地用这种方式绘制,所以我所留下的只是一个奇点,试图确定边界框应该在哪里谎言。

关于这个的任何想法?如果知道有用,这些图形是在SVG中定义的,并且正在使用Github上的vvvv / SVG库由C#实现进行处理。

2 个答案:

答案 0 :(得分:1)

这个问题被称为“Oriented Bounding Box” - 如果你想搜索它。在2D中执行此操作相当容易(并且算法快速) - 在更高维度上更难实现。对于2D使用Rotating Calipers Algorithm

答案 1 :(得分:1)

如果你知道边界框需要对齐的面,那么你只需要:

  1. 计算该面对X轴的角度
  2. 按该角度旋转形状,使面与轴对齐
  3. 计算边界框(最小和最大X& Ys)
  4. 用-angle旋转四个边界框角。