我有一个从 cloudpoint 生成的网格,可以描述为z = f(x,y),所以我使用scipy.interpolate.bisplrepand 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)

到现在为止还挺好。问题是:当我同时要求两个偏导数时,我无法理解(也找不到任何解释)结果的含义是什么,因为没有任何明显的数字或视觉含义。例如,如果我使用dxAND 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 或其与导数相关的值之一)。
有什么帮助吗?
谢谢阅读