zoukankan      html  css  js  c++  java
  • 数学图形之牟合方盖

    维基上的解释是:牟合方盖是一种几何体,是两个等半径圆柱躺在平面上垂直相交的公共部分,因为像是两个方形的盖子合在一起,所以被称作“牟合方盖”。

    说得有点绕,简单说:牟合方盖是两个半径相等并且轴心互相垂直的圆柱体相交而成的三维图形。个人觉得它是一种即方又圆的图形.

    相关软件参见:数学图形可视化工具,使用自己定义语法的脚本代码生成数学图形.该软件开源免费.

    (1)牟合方盖

    vertices = D1:100 D2:100
    
    u = from 0 to (PI*2) D1
    v = from (-PI/2) to (PI/2) D2
    
    m = cos(u)
    n = sin(u)
    
    y = sin(v)
    r = cos(v)*SQRT2
    
    b = abs(m) < abs(n)
    
    x = if(b, m*r, sign(m)*r/SQRT2)
    z = if(b, sign(n)*r/SQRT2, n*r)
    
    a = 10
    
    x = x*a
    y = y*a
    z = z*a

    (2)三圆柱相交

    牟合方盖是两个等半径圆柱垂直相交生成的,那么如果再用一个垂直的圆柱与牟合方盖相交,会得到什么图形呢?

    下面为三个半径相等并且轴心互相垂直的圆柱体相交而成的三维图形.

    vertices = D1:100 D2:100
    
    u = from 0 to (PI*2) D1
    v = from (-PI/2) to (PI/2) D2
    
    m = cos(u)
    n = sin(u)
    
    y = sin(v)
    r = cos(v)*SQRT2
    
    b = abs(m) < abs(n)
    
    x = if(b, m*r, sign(m)*r/SQRT2)
    z = if(b, sign(n)*r/SQRT2, n*r)
    
    e = sqrt(x*x + z*z)
    x = if(e > 1, x/e, x)
    z = if(e > 1, z/e, z)
    
    a = 10
    
    x = x*a
    y = y*a
    z = z*a

    (3)变异的牟合方盖

    这其实是我写脚本代码时,一个变量写错了生成的图形.

    vertices = D1:100 D2:100
    
    u = from 0 to (PI*2) D1
    v = from (-PI/2) to (PI/2) D2
    
    m = cos(u)
    n = sin(u)
    
    y = sin(v)
    r = cos(v)
    
    b = abs(m) > abs(n)
    
    x = if(b, m*r, sign(m)*r/SQRT2)
    z = if(b, sign(n)*r/SQRT2, n*r)
    
    a = 10
    
    x = x*a
    y = y*a
    z = z*a

  • 相关阅读:
    单核时代,PHP之类多线程或者多进程的,是怎么处理并发的?是排队吗?
    高并发下的Node.js与负载均衡
    telnet 查看端口是否可访问
    同步与异步--
    函数式编程沉思录(草稿)
    面向状态机编程
    promise是有状态的moand
    异步链式编程—promise沉思录
    同步与异步
    网络编程释疑之:同步,异步,阻塞,非阻塞
  • 原文地址:https://www.cnblogs.com/WhyEngine/p/3892794.html
Copyright © 2011-2022 走看看