给定定义doubly ruled hyperbolic paraboloid的四个点(p0,p1,p2,p3),使用python的numpy模块计算表面积的最佳(最快)方法是什么?

解决方法:

这比编程更多的是数学运算,因此您可能想与math.stackexchange的人们进行核对.但是,从上一个问题的答案开始,可以将表面参数化为:

s = p0 + u * (p1 - p0) + v * (p3 - p0) + u * v * (p2 - p3 - p1 + p0) =

p0 + u * a + v * b + u * v * c

您的四个点所限制的面积为0< = u&=; 1和0< = v< = 1.

您可以通过微分获得与表面相切的两个向量:

t1 = ds/du = a + v * c

t2 = ds/dv = b + u * c

然后,您可以获得一个正交于其他两个矢量的范数,该矢量等于它们描述的平行四边形的面积,并取它们的叉积:

A = t1 x t2 = a x b + u * a x c + v * c x b

继续集成A是很诱人的,但是要集成它是它的规范,而不是向量本身.我尝试将其提供给Mathematica,以查看它是否可以提供一些不错的封闭式解决方案,但是现在已经进行了几分钟,却没有到达任何地方.因此,您也可以用数字来做事情:

def integrate_hypar(p0, p1, p2, p3, n=100):

a = p1 - p0

b = p3 - p0

c = p2 - p3 - p1 + p0

delta = 1 / n

u = np.linspace(0,1, num=n, endpoint=False) + delta / 2

axb = np.cross(a, b)

axc = np.cross(a, c)

cxb = np.cross(c, b)

diff_areas = (axb + u[:, None, None] * axc +

u[:, None] * cxb) * delta * delta

diff_areas *= diff_areas

diff_areas = np.sum(diff_areas, axis=-1)

diff_areas = np.sqrt(diff_areas)

return np.sum(diff_areas)

有了其他问题的数据,我得到:

p0 = np.array([1.15, 0.62, -1.01])

p1 = np.array([1.74, 0.86, -0.88])

p2 = np.array([1.79, 0.40, -1.46])

p3 = np.array([0.91, 0.79, -1.84])

>>> integrate_hypar(p0, p1, p2, p3)

0.54825122958719719

标签:3d,python,math,numpy

来源: https://codeday.me/bug/20191122/2062143.html

python求球的表面积_python-Hypar的表面积(双曲线抛物面)相关推荐

  1. python求n的阶乘_python求n的阶乘

    阶乘是基斯顿·卡曼(Christian Kramp,1760-1826)于1808年发明的运算符号,是数学术语.一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1 ...

  2. python 求平面两点距离_Python求平面内点到直线距离的实现

    近期遇到个问题,需要计算平面内点到直线的距离,发现数学知识都还给老师了,度娘后找到计算方法,特此记录. 点到直线的计算公式: 通过公式推导,得到信息: A:直线斜率 B:固定值-1 C:直线截距b 转 ...

  3. python求两数最大公因数_Python求两个数的最大公约数

    Python求两个数的最大公约数 一.求最大公约数算法: 1. 整数A对整数B进行取整, 余数用整数C来表示 举例: C = A % B 2. 如果C等于0,则C就是整数A和整数B的最大公约数 3. ...

  4. python求三个数平均值_python求三个数平均值

    本文收集整理关于python求三个数平均值的相关议题,使用内容导航快速到达. 内容导航: Q1:利用python3.x计算任意数据平均值 l=[1,2,3]def ave(a):print(sum(a ...

  5. python求奇数的乘积_python求偶数之积

     今天小编就为大家分享一篇python 求1-100之间的奇数或者偶数之和的实例,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 如下所示: i=0sum1=0sum2=0... P ...

  6. 用python求pi的近似值_python求pi的方法

    本文实例讲述了python求pi的方法,是一篇翻译自国外网站的文章,分享给大家供大家参考. 具体实现方法如下: #_*_ coding=utf-8 *_* ## {{{ http://code.act ...

  7. python求1-n的平方和_python求1到50的平方和-女性时尚流行美容健康娱乐mv-ida网

    女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页  > 高级搜索 wps表格中输入 平方 和 立 ...

  8. python求球的表面积_892. 三维形体的表面积(Python)

    题目 难度:★★☆☆☆ 类型:几何.数学.二维数组 在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, ...

  9. python求平方根的代码_Python求平方根(附带源码)

    对于求一个浮点数的平方根,可以使用库函数,如 math.sqrt().但在本节,为了演示浮点数的一些用法,我们用下面的迭代法来求某个数的平方根. 其基本原理如下,对于一个浮点数 a,其平方根一定在 1 ...

最新文章

  1. python官网下载安装教程-各种版本的Python下载安装教程
  2. Java 使用枚举类的实例
  3. 7收不到邮件 contact form_如何解决Contact Form 7提示的配置错误
  4. touchWX 自定义组件以及传值
  5. 卸载 系统打印服务器,win10系统打印机驱动卸载不掉的方案介绍
  6. 【CodeForces - 472A】Design Tutorial: Learn from Math (tricks,思维,数论,打表)
  7. win10上如何启用或禁用Windows功能
  8. python使用-python使用
  9. k8s springboot 文件_用Kubernetes部署Springboot或Nginx,也就一个文件的事
  10. POJ 2528 线段树 成段更新+【离散化】 贴海报.cpp
  11. 用友集团前端面经整理及答案
  12. 用vector实现通用堆栈的类模板
  13. 在线教育十字路口:新东方遭危机 YY欲成颠覆者
  14. CSS---px rpx pt em rem四种单位总结
  15. 输入中文转换成拼音首字母
  16. 对未来人工智能的一些预测和想法
  17. 四种方法解决:Windows10下使用SVN文件夹不显示小绿勾
  18. MongoDB、ElasticSearch、Redis、HBase这四种热门数据库的优缺点及应用场景
  19. 视觉语言导航综述Visual Language Navigation
  20. 【算法图解】——算法必备

热门文章

  1. C语言变量前面加vol,Volitale
  2. 【Java】Java编译时错误:A JNI error has occurred, please check your installation and try again
  3. python软件可以申请著作权吗_什么样的软件可以申请软件著作权?
  4. voicewo在线语音识别转换jQuery插件
  5. 笔记本计算机无线开关在哪里,笔记本的WIFI开关在哪里 笔记本WIFI打开方法
  6. 软件工程概念总结-期末重点-(简单中文+英文关键词)-第一部分软件过程(第1-6章)-罗杰S普莱斯曼
  7. 用apktool反编译,修改添加smali文, 再打包apk遇到的64k问题的解决方法 Unsigned short value out of range: 65536
  8. wps时间戳转换成日期
  9. 部件mscomctl_mscomctl.ocx下载_mscomctl.ocx官方下载【32位64位】-太平洋下载中心
  10. MATLAB基础应用精讲-【基础知识篇】脚本文件