【Manim】用manim描述二次曲面——下

接上次的【Manim】用manim描述二次曲面——上-优快云博客内容,接下来继续绘制并解释二次曲面。

双曲面

这是双曲面的一般方程。

 这是一个典型的两片双曲面的草图。

 前面带正数的变量将给出图形居中的轴。注意,单张纸的双曲面和两张纸的双曲面的唯一区别是变量前面的符号。它们是完全相反的符号。同样要注意的是,就像我们处理锥体一样,如果我们解出z的方程正的部分会给出上半部分的方程而负的部分会给出下半部分的方程。

接下来用manim实现该双曲面的绘制:

示例代码:

from manim import *  

class HyperboloidofOneSheetScene03(ThreeDScene):  
    def construct(self):  
        # 设置相机背景颜色为白色  
        self.camera.background_color = WHITE  

        # 设置参数  
        a, b, c = 0.3, 0.4, 0.6  # 半轴长度  

        # 创建超曲面,表示上半部分  
        hyperboloid = Surface(  
            lambda u, v: np.array([  
                a * np.sinh(v) * np.cos(u),  # x = a * sinh(v) * cos(u)  
                b * np.sinh(v) * np.sin(u),  # y = b * sinh(v) * sin(u)  
                c * np.cosh(v)                # z = c * cosh(v)  
            ]),  
            u_range=[0, TAU],  # u 从 0 到 2π  
            v_range=[-2, 2],   # v 范围更新为 -2 到 2,显示上半部分超曲面  
            resolution=(50, 50)  # 网格分辨率  
        )  
        # 设置超曲面的样式  
        hyperboloid.set_style(fill_color=(RED, PURPLE), fill_opacity=1, stroke_color=BLUE_E)  

        # 创建超曲面,表示下半部分  
        hyperboloid2 = Surface(  
            lambda u, v: np.array([  
                a * np.sinh(v) * np.cos(u),  # x = a * sinh(v) * cos(u)  
                b * np.sinh(v) * np.sin(u),  # y = b * sinh(v) * sin(u)  
                -c * np.cosh(v)               # z = -c * cosh(v),这里是下半部分  
            ]),  
            u_range=[0, TAU],  # u 从 0 到 2π  
            v_range=[-2, 2],   # v 范围更新为 -2 到 2,显示下半部分超曲面  
            resolution=(50, 50)  # 网格分辨率  
        )  
        # 设置下半部分超曲面的样式  
        hyperboloid2.set_style(fill_color=(RED, PURPLE), fill_opacity=1, stroke_color=BLUE_E)  

        # 在超曲面上绘制平行线  
        for v in np.linspace(-1, 2, 2):  # 在超曲面上绘制平行线  
            line = Line(  
                start=np.array([a * np.sinh(-2) * np.cos(0), b * np.sinh(-2) * np.sin(0), c * np.cosh(-2)]),  
                end=np.a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yasen.M

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值