Python 缩放一个形状以完全包含另一个形状

Python 缩放一个形状以完全包含另一个形状,python,optimization,geometry,geometry-surface,Python,Optimization,Geometry,Geometry Surface,我有一个优化问题,我似乎无法集中注意力。我有两个形状,都是用参数方程描述的。称它们为a(θ)和b(θ) 我想做的是,给定一个形状a(θ),缩放另一个形状b(θ)以完全包围第一个形状。复杂性在于a(θ)和b(θ)的实际几何形状可能会根据用户定义的参数而变化 我可以通过检查a(θ)和b(θ)曲面上的每个点来实现这一点,但我希望有一种计算效率更高的方法。有人有什么建议吗 谢谢 这是一个图,显示了我所说的“一个形状在另一个形状中”: 如果您只需要缩放外部图形,而不需要找到接近最优的解决方案,那么它相对简

我有一个优化问题,我似乎无法集中注意力。我有两个形状,都是用参数方程描述的。称它们为a(θ)和b(θ)

我想做的是,给定一个形状a(θ),缩放另一个形状b(θ)以完全包围第一个形状。复杂性在于a(θ)和b(θ)的实际几何形状可能会根据用户定义的参数而变化

我可以通过检查a(θ)和b(θ)曲面上的每个点来实现这一点,但我希望有一种计算效率更高的方法。有人有什么建议吗

谢谢

这是一个图,显示了我所说的“一个形状在另一个形状中”:


如果您只需要缩放外部图形,而不需要找到接近最优的解决方案,那么它相对简单

将两个方程转换为极坐标。参数化
b
的半径系数。减法,这样你就有了某种形式的东西

c(theta, r) = r * b(theta) - a(theta)
现在,您只需求解
r
,找到一个值,使得
c
对所有θ都为正。这将与形状的参数化描述一样复杂


如果你需要一个极小的解,或者一个近似极小的解,那么就没有好的,封闭形式的解。考虑上面的<代码>(R,θ)<代码>的定义,但是添加更多的参数:你也可以翻译或旋转方程,给你

c(theta, alpha, r, (h, k)) = r * b(theta + alpha, (h, k)) - a(theta)
这个5维空间更难搜索。一种典型的启发式方法是搜索空间上的梯度下降,但这不适用于任意空间——只适用于具有良好表现的梯度的空间



如果您知道形状的限制,可能有一个很好的旋转和平移通用解决方案。例如,如果您知道形状是凸的,那么问题就变得容易多了:您可以确定最大跨度和最小跨度,或者迭代地扩展和移动外部形状,直到解决所有重叠。然而,这需要一个新的问题定义和一个新的问题发布。

每一个点都是很多的,接近无穷大……即使是简单的形状,找到一个最佳的解决方案也是很困难的。如果极原点是公共的,则计算或估计内部形状的最大
r
,以及外部形状的最小
r
。凸形问题一点也不容易。凸形的最优解不容易;一个简单好的解决方案就在眼前。无论如何,这比一般情况要容易得多。我不同意。凸多边形的内部是凹的,问题并不简单。我认为我们使用的术语不同。不,我们不是。你知道我的意思。