• 数学图形之单叶双曲面


        双曲线绕其对称轴旋转而生成的曲面即为双曲面。在数学里,双曲面是一种二次曲面。
        其中单叶双曲面可以用公式表达为:
        (x^2)/(a^2)+(y^2)/(b^2)-(z^2)/(c^2)=1 
         

        在现实中,许多发电厂的冷却塔结构是单叶双曲面形状。由于单叶双曲面是一种双重直纹曲面(ruled surface) ,它可以用直的钢梁建造。这样,会减少风的阻力.同时,也可以用最少的材料来维持结

    构的完整.

        本文将展示几种生成单叶双曲面算法和切图.使用自己定义语法的脚本代码生成数学图形.相关软件参见:数学图形可视化工具,该软件免费开源.QQ交流群: 367752815

    (1)

    vertices = dimension1:72 dimension2:72
    
    u = from 0 to (2*PI) dimension1
    v = from (-4) to (4) dimension2
    
    x = cosh(v)*cos(u)
    z = cosh(v)*sin(u)
    y = sinh(v)

    (2)

    单叶双曲面是一种直纹面(Ruled_surface),即它是由一族直线铺成的曲面。直线 x=1, y=t, z=2t 绕 z 轴旋转得到的单叶双曲面。下面是使用直线生成单叶双曲面的例子:

    vertices = dimension1:72 dimension2:72
    
    u = from 0 to (2*PI) dimension1
    v = from (-10) to (10) dimension2
    
    x = cos(u) - v*sin(u)
    z = sin(u) + v*cos(u)
    y = 2*v

    (3)椭圆开口的随机单叶双曲面

    vertices = dimension1:72 dimension2:72
    
    u = from 0 to (2*PI) dimension1
    v = from (-5) to (5) dimension2
    
    a = rand2(1, 5)
    b = rand2(1, 5)
    c = rand2(1, 5)
    
    x = a*sqrt(1 + v*v)*cos(u)
    z = b*sqrt(1 + v*v)*sin(u)
    y = c*v

    (4)椭圆开口的随机单叶双曲面,另一种写法

    vertices = D1:100 D2:100
    u = from 0 to (2*PI) D1
    v = from (-PI*0.45) to (PI*0.45) D2
    a
    = rand2(1, 10) b = rand2(1, 10) c = rand2(1, 10)
    x
    = a*sec(v)*sin(u) y = b*tan(v) z = c*sec(v)*cos(u)

    (5)单叶双曲面的上半部分

    vertices = dimension1:72 dimension2:72
    u = from (PI*0.05) to (PI*0.499) dimension1
    v = from 0 to (2*PI) dimension2
    a = rand2(1, 5)
    b = rand2(1, 5)
    c = rand2(1, 5)
    x = a*cosh(u)*cos(v)
    z = b*cosh(u)*sin(v)
    y = c*sinh(u)

    (6)单叶双曲面的下半部分

    vertices = dimension1:72 dimension2:72
    u = from (-PI*0.499) to (-PI*0.01) dimension1
    v = from 0 to (2*PI) dimension2
    a = rand2(1, 5)
    b = rand2(1, 5)
    c = rand2(1, 5)
    x = a*cosh(u)*cos(v)
    z = b*cosh(u)*sin(v)
    y = c*sinh(u)

    (7)直线 随机旋转面

    vertices = 100
    u = from -10 to 10
    
    a = rand2(-5, 5)
    b = rand2(-5, 5)
    
    x = u
    y = (x + a) + b
    
    i = rand2(-2, 2)
    j = rand2(-2, 2)
    k = rand2(-2, 2)
    
    surface_slices = 72
    rotate = anchor[0, 0, 0], axis[i, j, k], angle[0, 2*PI]

  • 相关阅读:
    1085 PAT单位排行
    安装MongoDB并且添加用户
    同源政策,发送请求时携带cookie信息
    博客园文章编辑时实现语法高亮
    template中的时间格式如何修改
    Node模块下载路径的更改设置
    JavaScript--遍历
    JavaScript--作用域
    JavaScript--arguments
    JavaScript--apply&call
  • 原文地址:https://www.cnblogs.com/WhyEngine/p/3912279.html
Copyright © 2020-2023  润新知