一种选择是使用VTK。(我将在这里使用tvtkpython绑定…)

至少在某些情况下,获得等值面内的面积会更精确一些。在

同样,对于表面积,tvtk.MassProperties也计算表面积。它是mass.surface_area(下面的代码中有mass对象)。在import numpy as np

from tvtk.api import tvtk

def main():

# Generate some data with anisotropic cells...

# x,y,and z will range from -2 to 2, but with a

# different (20, 15, and 5 for x, y, and z) number of steps

x,y,z = np.mgrid[-2:2:20j, -2:2:15j, -2:2:5j]

r = np.sqrt(x**2 + y**2 + z**2)

dx, dy, dz = [np.diff(it, axis=a)[0,0,0] for it, a in zip((x,y,z),(0,1,2))]

# Your actual data is a binary (logical) array

max_radius = 1.5

data = (r <= max_radius).astype(np.int8)

ideal_volume = 4.0 / 3 * max_radius**3 * np.pi

coarse_volume = data.sum() * dx * dy * dz

est_volume = vtk_volume(data, (dx, dy, dz), (x.min(), y.min(), z.min()))

coarse_error = 100 * (coarse_volume - ideal_volume) / ideal_volume

vtk_error = 100 * (est_volume - ideal_volume) / ideal_volume

print 'Ideal volume', ideal_volume

print 'Coarse approximation', coarse_volume, 'Error', coarse_error, '%'

print 'VTK approximation', est_volume, 'Error', vtk_error, '%'

def vtk_volume(data, spacing=(1,1,1), origin=(0,0,0)):

data[data == 0] = -1

grid = tvtk.ImageData(spacing=spacing, origin=origin)

grid.point_data.scalars = data.T.ravel() # It wants fortran order???

grid.point_data.scalars.name = 'scalars'

grid.dimensions = data.shape

iso = tvtk.ImageMarchingCubes(input=grid)

mass = tvtk.MassProperties(input=iso.output)

return mass.volume

main()

这就产生了:

^{pr2}$

python求球的表面积_python中计算体积或表面积的好算法相关推荐

  1. python求50的阶乘_python中求阶乘

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我如何去计算python中的一个整数的阶乘?... 写一个猜数字的游戏,预先设定 ...

  2. python求50的阶乘_python中的阶乘

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我如何去计算python中的一个整数的阶乘?... 问题描述 阶乘是我们在很多的 ...

  3. python求奇数的乘积_Python中的推导式使用详解

    推导式是Python中很强大的.很受欢迎的特性,具有语言简洁,速度快等优点.推导式包括: 1.列表推导式 2.字典推导式 3.集合推导式 嵌套列表推导式 NOTE: 字典和集合推导是最近才加入到Pyt ...

  4. python求平方根的小数_python中的数字和数学运算

    计算机最先被发明的目的是帮助人类进行科学计算的,计算机非常善于记住数值,也非常善于执行计算(加.减法等).计算机每秒钟能执行10亿次计算,这比我们自己用大脑计算数字要快很多.尽管在某些任务上我们比计算 ...

  5. python求列表的中位数_python中获取中位数的两种方法

    普通方法: 对列表进行排序,然后根据长度为奇数或者偶数的不同情况计算中位数 def huahua(x): length = len(x) print(length) x.sort() print(x) ...

  6. python求级数的值_python中的级数和

    对于内建,可以使用zip将位于同一索引位置的元素组合在一起list1 = [2,3,4] list2 = [3,3,3] result = sum( x*y for x,y in zip(list1, ...

  7. python求数列数量积_python中矩阵运算(乘法和数量积)

    # ============================================================================= python中矩阵运算分为两种形式,一是 ...

  8. python求f的倒数_Python中整数的倒数

    给定一个32位有符号整数,整数的倒数.在 示例1: 输入:123 产量:321 例2: 输入:-123 输出:-321 例3: 输入:120 输出:21 假设我们处理的环境只能存储32位有符号整数范围 ...

  9. 用python求三角形周长文件_Python中最大的周长三角形

    假设我们有一个正长度的数组A,我们必须找到面积为非零的三角形的最大周长,该三角形由这些长度中的3个组成.当不可能形成任何非零区域的三角形时,则返回0. 因此,如果输入类似于[3,6,2,3],则输出将 ...

  10. python求表面积代码_用于计算python中的体积或表面积的良好算法

    我正在尝试计算3D numpy数组的体积(或表面积).在许多情况下,体素是各向异性的,并且我在每个方向上具有像素到厘米的转换因子. 有没有人知道找到工具包或包来做上述的好地方? 现在,我有一些内部代码 ...

最新文章

  1. Android之Android实现浮层的上下滑动(支持内部添加View)
  2. github上面图片不显示
  3. 【C# interface接口】对接口的理解、接口的使用方式(最通俗的解释)
  4. Linux 出现Permission denied的解决办法
  5. PGer看过来!亚洲最大的PG技术盛会重磅来袭!墨天轮全球同步直播!
  6. flash人物原地走路,Flash制作小人走路简单动画图文教程
  7. 小林求职记(四)不会吧不会吧,面试还真会问这些呀
  8. QList、QVector、QMap容器类
  9. java中try中的语句执行吗_Java异常try里面有return,finally代码会执行吗
  10. 学生用计算机怎么乘跟跟号号,3根号键的啊函数计算器价格多少,它与普通计 – 手机爱问...
  11. MDP马尔可夫决策过程
  12. html文档用什么浏览器打开,用什么打开HTML文件?
  13. 工业交换机在智能交通电子警察系统解决方案的应用
  14. poi word表格系列操作
  15. Linux下用火焰图进行性能分析
  16. 截图工具因为计算机无法使用,win7系统电脑自带截图工具不能用失灵了的解决方法...
  17. 超实用的几个编程学习公众号
  18. SAP 生产订单/工单状态说明
  19. 高仿网易云音乐一(可扫描本地音乐播放)
  20. ndarray 与 array 的区别 关系

热门文章

  1. Hadoop实战第2版 - 电子书下载(高清版PDF格式+EPUB格式)
  2. 齐齐哈尔大学计算机调剂,齐齐哈尔大学2020年硕士研究生调剂信息
  3. 金彩教育:详情页文案怎么写
  4. delphi xe10 android x86,盒子 - 完整版DELPHI XE10.1移动开发框架  绝对可以使用
  5. Linear-gradient()
  6. 你是如何看待saas行业
  7. python爬虫网页图片显示不出来_网页爬虫 - python下载的图片不显示,无法查看
  8. 【C/C++】共用体(union)
  9. 我是这样手写 Spring 的(麻雀虽小五脏俱全)
  10. 22 个最常用的 Python 包