我有一个从 cloudpoint 生成的网格,可以描述为z = f(x,y)
,所以我使用scipy.interpolate.bisplrep
and bisplev
,效果很好。
bisplev
可以与参数一起使用dx=n
和/或dy=n
使得结果是n
评估点的阶导数。我计划用它来计算平均曲率和高斯曲率(surfature
在 Matlab 中调用),这应该涉及获得曲面的二阶偏导数
一次使用其中一个偏导数的结果dx
非常好,清楚地将渐变表示为“阴影”效果,如这张从人类背部拍摄的图像中所见(代码优先):
self.spline = inter.bisplrep(self.pointlist[:,1],
self.pointlist[:,0],
self.pointlist[:,2], s=smoothing_factor)
self.mesh_shadow = inter.bisplev(yy.flat, xx.flat, self.spline, dy=1)
到现在为止还挺好。问题是:当我同时要求两个偏导数时,我无法理解(也找不到任何解释)结果的含义是什么,因为没有任何明显的数字或视觉含义。例如,如果我使用dx
AND dy
:
self.mesh_shadow = inter.bisplev(yy.flat, xx.flat, self.spline, dx=1, dy=1)
我明白了:
所以,我想知道:
- 由 给出的表面的一阶偏导数的同时结果的数学/几何意义是
bislplev(..., dx=1, dy=1)
什么? - 有没有办法从 获得最大斜率(在任何方向)
bislplev(..., dx=1, dy=1)
? - 首先,两个偏导数是否应该一起调用?我知道我可以使用,比如说,
(..., dx=1, dy=2)
这个函数似乎产生了“有效”的结果,但这有什么意义吗?
每次,返回值都是一个 (Y,X) 形的单个浮点值数组(Z 或其与导数相关的值之一)。
有什么帮助吗?
谢谢阅读