Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何用不相交的旋转矩形填充矩形区域?_Algorithm_Geometry_2d - Fatal编程技术网

Algorithm 如何用不相交的旋转矩形填充矩形区域?

Algorithm 如何用不相交的旋转矩形填充矩形区域?,algorithm,geometry,2d,Algorithm,Geometry,2d,我尝试为物理模拟创建一个场景。场景由漂浮在矩形池塘中的矩形浮冰组成。大概是这样的: 因此,我需要用宽度和高度在指定范围内的非相交旋转矩形填充矩形区域。我不需要找到该地区的最佳覆盖范围。目标只是生成不同大小的浮冰,而不需要交叉点 和我想得到一个没有任何动态的解决方案,只使用碰撞检测算法。 < P>你可以考虑模拟一个方块落入方块桶中并保存所有盒子的位置。 是一个开源的2D物理库,它可以为你做这件事,你可能会把它看作是愤怒的小鸟和百万个闪存游戏背后的物理引擎。 < P>你可以考虑模拟一个方块落入方块

我尝试为物理模拟创建一个场景。场景由漂浮在矩形池塘中的矩形浮冰组成。大概是这样的:

因此,我需要用宽度和高度在指定范围内的非相交旋转矩形填充矩形区域。我不需要找到该地区的最佳覆盖范围。目标只是生成不同大小的浮冰,而不需要交叉点


和我想得到一个没有任何动态的解决方案,只使用碰撞检测算法。

< P>你可以考虑模拟一个方块落入方块桶中并保存所有盒子的位置。

是一个开源的2D物理库,它可以为你做这件事,你可能会把它看作是愤怒的小鸟和百万个闪存游戏背后的物理引擎。

< P>你可以考虑模拟一个方块落入方块桶中并保存所有盒子的位置。
是一个开源的2D物理库,可以为您实现这一点-您可能会认为它是愤怒的小鸟和无数Flash游戏背后的物理引擎。

要对实体(即非相交)对象建模,您可以使用物理引擎。碰巧我前几天读了一篇文章,里面有一段视频几乎完全描述了你的需求。是box2d的.NET版本,您可能听说过。

要对实体(即非相交)对象建模,可以使用物理引擎。碰巧我前几天读了一篇文章,里面有一段视频几乎完全描述了你的需求。是box2d的.NET版本,您可能听说过。

我会做以下几点:

假设矩形的长度介于[MaxSize MinSize]之间

r <- MaxSize

do{
  Trying adding non-intersecting circles to the area with radius r and random center (x,y). We use circle instead of rectangle because intersection detecting for circles are easier than rectangles. e.g. if distance(x,y,x',y')<r+r' then we are good.

  If adding circle failed{
    r--;
    if r< MinSize break;
  }
}

r我要做的是:

假设矩形的长度介于[MaxSize MinSize]之间

r <- MaxSize

do{
  Trying adding non-intersecting circles to the area with radius r and random center (x,y). We use circle instead of rectangle because intersection detecting for circles are easier than rectangles. e.g. if distance(x,y,x',y')<r+r' then we are good.

  If adding circle failed{
    r--;
    if r< MinSize break;
  }
}

r确定它不可能是最优的----最优解决方案将是平铺。:)确定它不可能是最优的----最优解决方案将是平铺。:)这主意不错,但我想得到一个没有任何动力学的解决方案,只使用碰撞检测。我已经根据这条评论更新了我的问题。这主意不错,但我想得到一个没有任何动力学的解决方案,只使用碰撞检测。我已经根据这个评论更新了我的问题。