缩放形状以完全包含另一个形状
Scale a shape to fully include another shape
我有一个优化问题似乎无法解决。我有两个形状,它们都由参数方程描述。称它们为 a(theta) 和 b(theta)。
我想做的是,给定一个形状 a(theta),缩放另一个形状 b(theta) 以完全包围第一个形状。复杂性在于 a(theta) 和 b(theta) 的实际几何形状可能会根据用户定义的参数而改变。
我可以通过检查 a(theta) 和 b(theta) 表面上的每个点来做到这一点,但我希望有一种计算效率更高的方法。有人有什么建议吗?
谢谢!
这张图展示了我所说的“一个形状内嵌另一个形状”的含义:
如果只需要对外部图形进行缩放,而不需要寻找一个接近最优的解,那就相对简单了。
将两个方程转换为极坐标。参数化b
的半径系数。减去,所以你有形式的东西
c(theta, r) = r * b(theta) - a(theta)
现在,您只需求解 r
,找到一个值,使得 c
对于所有 theta 都是正值。这将与您对形状的参数化描述一样复杂。
如果您需要最小解或接近最小解,则没有好的封闭形式解。考虑上面 (r, theta)
的定义,但添加更多参数:您也可以平移或旋转等式,给您
c(theta, alpha, r, (h, k)) = r * b(theta + alpha, (h, k)) - a(theta)
这个 5 维 space 更难搜索。典型的启发式算法是搜索 space 中的梯度下降法,但这不适用于任意 spaces——仅适用于具有良好行为梯度的那些。
如果您知道形状的限制,可能有一个很好的旋转和平移通用解决方案。例如,如果您知道形状是凸形的,问题就会变得 容易得多 :您确定最大和最小跨度,或者反复扩展和移动外部形状,直到解决所有重叠。但是,这需要新的问题定义和发布的新问题。
我有一个优化问题似乎无法解决。我有两个形状,它们都由参数方程描述。称它们为 a(theta) 和 b(theta)。
我想做的是,给定一个形状 a(theta),缩放另一个形状 b(theta) 以完全包围第一个形状。复杂性在于 a(theta) 和 b(theta) 的实际几何形状可能会根据用户定义的参数而改变。
我可以通过检查 a(theta) 和 b(theta) 表面上的每个点来做到这一点,但我希望有一种计算效率更高的方法。有人有什么建议吗?
谢谢!
这张图展示了我所说的“一个形状内嵌另一个形状”的含义:
如果只需要对外部图形进行缩放,而不需要寻找一个接近最优的解,那就相对简单了。
将两个方程转换为极坐标。参数化b
的半径系数。减去,所以你有形式的东西
c(theta, r) = r * b(theta) - a(theta)
现在,您只需求解 r
,找到一个值,使得 c
对于所有 theta 都是正值。这将与您对形状的参数化描述一样复杂。
如果您需要最小解或接近最小解,则没有好的封闭形式解。考虑上面 (r, theta)
的定义,但添加更多参数:您也可以平移或旋转等式,给您
c(theta, alpha, r, (h, k)) = r * b(theta + alpha, (h, k)) - a(theta)
这个 5 维 space 更难搜索。典型的启发式算法是搜索 space 中的梯度下降法,但这不适用于任意 spaces——仅适用于具有良好行为梯度的那些。
如果您知道形状的限制,可能有一个很好的旋转和平移通用解决方案。例如,如果您知道形状是凸形的,问题就会变得 容易得多 :您确定最大和最小跨度,或者反复扩展和移动外部形状,直到解决所有重叠。但是,这需要新的问题定义和发布的新问题。