剧情提要:
[机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第五转的修炼。
这次要研究的是[推理与证明]。

正剧开始:

星历2016年04月24日 12:16:07, 银河系厄尔斯星球中华帝国江南行省。
[工程师阿伟]正在和[机器小伟]一起研究[推理与证明]。

<span style="font-size:18px;">>>>
23.5 13.865424623862042#海伦-秦九韶公式
def HQFormula(a, b, c):  p = (a+b+c)/2;  S = math.sqrt(p*(p-a)*(p-b)*(p-c));  return S;#例3
def tmp():#a, b, c = 3, 4, 5a, b, c = 3, 4, 5S1= a*b/2S2 = a*c/2S3 = b*c/2S4 = HQFormula((a*a+b*b)**0.5, (a*a+c*c)**0.5, (b*b+c*c)**0.5);print(S1+S2+S3, S4);</span>

<span style="font-size:18px;">  if (1) {var array = new Array();array[0] = [1];array[1] = [1,1];for (var i = 2; i < 10; i++) {array[i] = [1];for (var j = 1; j < i; j++) {array[i].push(array[i-1][j-1]+array[i-1][j]);}array[i].push(1);}var width = 600, height = 400;var x = width/2, y = 30;var measure = 0, s = '';var len = array.length;for (var i = 0; i < len; i++) {s = array[i].join('    ');measure = plot.measureText(s);plot.fillText(s, x-measure/2, y, measure);y += 30;}}</span>

关于求二面角,小伟找到了这个公式:

<span style="font-size:18px;">>>>
cos =  0.9218142082600806 角度是: 22.80723538641745 度#[数] dihedral angle;
#二面角余弦
def dihedral():xyz = [-1.2999760,0.0173840,-0.7162670,\1.0107690,1.5229620,-0.0945670,\0.0932470,-1.0086090,1.6265070,\-1.2280340,-1.4934410,1.8123150,\0.0932470,-1.0086090,1.6265070,\1.0734260,-1.5230970,2.5155820]#六个点ax1 = xyz[0]ay1 = xyz[1]az1 = xyz[2]bx2 = xyz[3]by2 = xyz[4]bz2 = xyz[5]cx3 = xyz[6]cy3 = xyz[7]cz3 = xyz[8]dx1 = xyz[9]dy1 = xyz[10]dz1 = xyz[11]ex2 = xyz[12]ey2 = xyz[13]ez2 = xyz[14]fx3 = xyz[15]fy3 = xyz[16]fz3 = xyz[17]#面一法线nx = ((cz3-az1)/(cy3-ay1)-(bz2-az1)/(by2-ay1))/((bx2-ax1)/(by2-ay1)-(cx3-ax1)/(cy3-ay1))ny = ((cz3-az1)/(cx3-ax1)-(bz2-az1)/(bx2-ax1))/((by2-ay1)/(bx2-ax1)-(cy3-ay1)/(cx3-ax1))nz = 1#面二法线mx = ((fz3-dz1)/(fy3-dy1)-(ez2-dz1)/(ey2-dy1))/((ex2-dx1)/(ey2-dy1)-(fx3-dx1)/(fy3-dy1))my = ((fz3-dz1)/(fx3-dx1)-(ez2-dz1)/(ex2-dx1))/((ey2-dy1)/(ex2-dx1)-(fy3-dy1)/(fx3-dx1))mz = 1cosAngle = (nx*mx+ny*my+nz*mz)/((math.sqrt(nx**2+ny**2+nz**2))*(math.sqrt(mx**2+my**2+mz**2)));print('cos = ', cosAngle, '角度是:', 180/math.pi*math.acos(cosAngle), '度');</span>

但是在验证的过程中小伟发现这个算法好像有问题:

比如对于下面这个例子:

求一下VAB和ABC的二面角

<span style="font-size:18px;">>>> [2, 5, 2, 5, 0, 1, 0, 0, 0, 1, 1, 5, 5, 0, 1, 0, 0, 0]
cos =  0.4911436350228293 角度是: 60.584222864016645 度#[数] dihedral angle;
#二面角余弦
#暂时只能算不垂直或平行于xy, xz, yz任一平面的两平面的二面角
#公式寻找中...
def dihedral(points):#points格式是 []*18, 分六个点,每个点x, y, z坐标排列'''xyz = [-1.2999760,0.0173840,-0.7162670,\1.0107690,1.5229620,-0.0945670,\0.0932470,-1.0086090,1.6265070,\-1.2280340,-1.4934410,1.8123150,\0.0932470,-1.0086090,1.6265070,\1.0734260,-1.5230970,2.5155820]'''if (len(points) != 18):return 'inf';xyz = points;#六个点ax1 = xyz[0]ay1 = xyz[1]az1 = xyz[2]bx2 = xyz[3]by2 = xyz[4]bz2 = xyz[5]cx3 = xyz[6]cy3 = xyz[7]cz3 = xyz[8]dx1 = xyz[9]dy1 = xyz[10]dz1 = xyz[11]ex2 = xyz[12]ey2 = xyz[13]ez2 = xyz[14]fx3 = xyz[15]fy3 = xyz[16]fz3 = xyz[17]#面一法线nx = ((cz3-az1)/(cy3-ay1)-(bz2-az1)/(by2-ay1))/((bx2-ax1)/(by2-ay1)-(cx3-ax1)/(cy3-ay1))ny = ((cz3-az1)/(cx3-ax1)-(bz2-az1)/(bx2-ax1))/((by2-ay1)/(bx2-ax1)-(cy3-ay1)/(cx3-ax1))nz = 1#面二法线mx = ((fz3-dz1)/(fy3-dy1)-(ez2-dz1)/(ey2-dy1))/((ex2-dx1)/(ey2-dy1)-(fx3-dx1)/(fy3-dy1))my = ((fz3-dz1)/(fx3-dx1)-(ez2-dz1)/(ex2-dx1))/((ey2-dy1)/(ex2-dx1)-(fy3-dy1)/(fx3-dx1))mz = 1cosAngle = (nx*mx+ny*my+nz*mz)/((math.sqrt(nx**2+ny**2+nz**2))*(math.sqrt(mx**2+my**2+mz**2)));print('cos = ', cosAngle, '角度是:', 180/math.pi*math.acos(cosAngle), '度');#求二面角
def tmp():V = [2, 5, 2]A = [5, 0, 1]B = [0, 0, 0]C = [1, 1, 5]points = V+ A + B+ C+A+B;#print(len(points));print(points);dihedral(points);</span>

再求一下VBC与ABC的,或是VAB与VBC的

<span style="font-size:18px;">>>>
[2, 5, 2, 0, 0, 0, 1, 1, 5, 1, 1, 5, 5, 0, 1, 0, 0, 0]
cos =  -0.2558139534883721 角度是: 104.82182106205012 度
>>> ================================ RESTART ================================
>>>
[2, 5, 2, 5, 0, 1, 1, 1, 5, 1, 1, 5, 5, 0, 1, 0, 0, 0]
cos =  -0.19218663979154185 角度是: 101.08042157684446 度</span>

怎么都会是100多度呢,看着不像啊,但小伟也说不准是对是错。

先放着吧。

<span style="font-size:18px;">  if (1) {  var r = 20;            config.setSector(1,1,1,1);              config.graphPaper2D(0, 0, r);            config.axis2D(0, 0,190);              //坐标轴设定        var scaleX = 4*r, scaleY = 4*r;          var spaceX = 2, spaceY = 2;           var xS = -10, xE = 10;          var yS = -10, yE = 10;          config.axisSpacing(xS, xE, spaceX, scaleX, 'X');            config.axisSpacing(yS, yE, spaceY, scaleY, 'Y');         var array = [[2, 5, 2], [5, 0, 1], [0, 0, 0], [1, 1, 5]];//array = shape.xyzSort(array);  var size = array.length;    var array2D = [];  for (var i = 0; i < size; i++) {  array2D.push(shape.point3D(array[i][0], array[i][1], array[i][2]));  }  //去除重复点    var pointArray = removeDuplicatedPoint(array2D);    //无重复的点的数量    var points = pointArray.length;    //得到距离阵列    //格式为[[点1序号,点2序号, 距离值], ...]    var distanceArray = distanceSort(pointArray);    //边的数量    var edges = distanceArray.length;    //存放需要连通的边    var linkedArray = [];    //连通的边的数量    var links = 0;    //每个顶点相关的边的集合    var edgeOfVertex = [];    for (var i = 0; i < points; i++) {    //获得顶点相关的边的集合    edgeOfVertex = [];    for (var j = 0; j < edges; j++) {    if (distanceArray[j][0] == i ||    distanceArray[j][1] == i) {    edgeOfVertex.push(distanceArray[j]);    }    }    //根据起始点寻找最短长度的两条边    edgeOfVertex.sort(function(a, b) {    return a[2] - b[2];    });    var choice = 4;    if (edgeOfVertex.length > choice) {    edgeOfVertex = edgeOfVertex.slice(0, choice);    }    linkedArray = linkedArray.concat(edgeOfVertex);    }    //document.write(linkedArray.join(' , ')+'<br/>');    linkedArray = removeDuplicatedPoint(linkedArray);    links = linkedArray.length;    //document.write(linkedArray.join(' , ')+'<br/>');        var startPoint, endPoint, x1, y1, x2, y2;    //比例缩放    var scale = 40;    for (var i = 0; i < links; i++) {    startPoint = linkedArray[i][0];    endPoint = linkedArray[i][1];    x1 = pointArray[startPoint][0];    y1 = pointArray[startPoint][1];    x2 = pointArray[endPoint][0];    y2 = pointArray[endPoint][1];    shape.vectorDraw([[x1,y1], [x2, y2]], 'red', scale);    }    shape.pointDraw(pointArray, 'blue', scale, 1, 'VABC');  plot.setFillStyle('blue');    plot.fillText('向量图', -270, -170, 300);    }</span>

本节到此结束,欲知后事如何,请看下回分解。

[从头学数学] 第193节 推理与证明相关推荐

  1. [从头学数学] 第208节 带着计算机去高考(序)

    剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第八转的修炼.设想一个场景: 如果允许你带一台不连网的计算机去参加高考,你会放弃选择一个手拿计算器和草稿本吗 ?阿伟决定和小伟来尝试 ...

  2. [从头学数学] 第46节 数学广角──集合

    剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入练气期第五层功法的修炼, 这次要修炼的目标是[数学广角──集合]. 正剧开始: 星历2016年01月15日 16:04:40, 银河系厄尔斯星球中华 ...

  3. [从头学数学] 第226节 [机器小伟]的元婴期修炼规划

    剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了元婴期的修炼. 正剧开始: 星历2016年05月27日 16:03:03, 银河系厄尔斯星球中华帝国江南行省. [工程师阿伟]正在和[机器小伟]一 ...

  4. [从头学数学] 第167节 集合与函数概念

    剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了结丹初期的修炼, 这次要修炼的目标是[集合与函数概念]. 正剧开始: 星历2016年04月08日 11:41:49, 银河系厄尔斯星球中华帝国江南 ...

  5. [从头学数学] 第180节 解三角形

    剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了结丹后期的修炼, 这次要修炼的目标是[解三角形]. 正剧开始: 话说[机器小伟]自从进入结丹期以来,短短数日,就硬是从结丹初期修炼到了后期,这种 ...

  6. [从头学数学] 第203节 坐标系与参数方程

    剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第七转的修炼. 这次要研究的是[坐标系与参数方程]. 正剧开始: 星历2016年05月03日 13:18:47, 银河系厄尔斯星球中 ...

  7. [从头学数学] 第189节 常用逻辑用语

    剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第五转的修炼. 这次要研究的是[常用逻辑用语]. 正剧开始: 星历2016年04月22日 09:18:39, 银河系厄尔斯星球中华帝 ...

  8. [从头学数学] 第191节 空间向量与立体几何

    剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第五转的修炼. 这次要研究的是[空间向量与立体几何]. 正剧开始: 星历2016年04月23日 11:00:22, 银河系厄尔斯星球 ...

  9. [从头学数学] 第188节 千军阅尽还复来(全)

    剧情提要: [机器小伟]在[project师阿伟]的陪同下进入了[九转金丹]之第四转的修炼. 这次要研究的是[复习题]. 正剧開始: 星历2016年04月21日 15:22:06, 银河系厄尔斯星球中 ...

  10. [从头学数学] 第171节 点、直线、平面之间的位置关系

    剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了结丹初期的修炼, 这次要修炼的目标是[点.直线.平面之间的位置关系]. 正剧开始: 星历2016年04月10日 13:48:09, 银河系厄尔斯星 ...

最新文章

  1. 如何看服务器java_如何查看Windows服务器运行了多长时间
  2. 企业网络推广专员浅析有利于企业网络推广的页面制作技巧有哪些?
  3. display(block,inline,none),visibility(visible,hidden)之间的关系及区别(不同)
  4. 13、HTML <meta>标签
  5. st04 查看数据库日志
  6. cp分解实现_如何用贝叶斯高斯张量分解修复缺失数据?(Jupyter notebook - Python)
  7. 性能测试 vs 负载测试 vs 压力测试
  8. java流与文件——ZIP文档
  9. kafka 集群_Kafka集群监控系统Kafka Eagle部署与体验
  10. java重载中this的作用_Java2:构造方法、方法重载和this关键字
  11. Arcgis创建SDE_Geometry、SDO_Geometry的区别
  12. 指针的指针的实际使用例子
  13. SpringBoot实战教程(3)| 整合Thymeleaf
  14. MyBatis出现红色错误,已解决(Establishing SSL connection without)
  15. makefile 生成.o_要学好 C 语言 / C++ ,Makefile 可少不了
  16. C# WinForm 数据库连接及对数据库的相关操作(未使用证实)
  17. c语言旋转bmp图片程序,C语言实现BMP图像处理(任意角度旋转)
  18. Windows下搭建kms激活服务器
  19. 泡泡龙游戏开发系列教程(六)
  20. echarts结合amap (echarts-extension-amap)

热门文章

  1. C语言-学习笔记完整版
  2. 论文翻译(二) CRNN 基于图像序列的识别的识别的端到端可训练神经网络及其在场景文字识别的应用
  3. 分享一个可以让你在朋友圈赚钱的小工具
  4. 使用sysprep.exe遇到windows无法完成系统配置。若要尝试恢复配置,请重新启动计算机
  5. android 录音机添加书签,带录音的书签的制作方法
  6. Git拉取远程最新代码,并与当前分支合并
  7. android中slider控件,VideoRangeSlider视频裁剪控件
  8. Linux出现“E45: ‘readonly‘ option is set (add ! to override)”的解决方法。
  9. 3. Git与TortoiseGit基本操作
  10. squid代理服务器的应用