首页 > 其他分享 >manim边做边学--圆锥

manim边做边学--圆锥

时间:2024-11-15 08:56:58浏览次数:1  
标签:圆锥体 Cone -- 创建 边学 base 圆锥 manim cone

ConeManim中专门用于创建和操控锥形几何对象的类。

Cone允许用户定义锥体的底面半径、高度、颜色、不透明度等属性,并提供了一系列方法来操控这个锥体,如移动、缩放、旋转等。

通过这些属性和方法,用户可以灵活地创建出符合自己需求的锥形对象,并将其融入到动画或演示中。

1. 主要参数

Cone的主要参数有:

参数名称 类型 说明
base_radius float 圆锥底部的半径
height float 圆锥的高度,也就是圆锥从底面中心到顶点的垂直距离
direction np.ndarray 圆锥的朝向
show_base bool 是否显示圆锥的底面
v_range list[float] 圆锥纵向扫描的范围,用于控制圆锥侧面的纵向形状
u_min float 圆锥横向扫描的最小角度,影响圆锥侧面的横向分布
checkerboard_colors bool 是否使用棋盘格颜色模式,有助于在视觉上区分圆锥的不同部分

这些参数允许用户灵活地创建和自定义圆锥体对象。

例如,

  • 通过调整base_radiusheight参数,可以改变圆锥的大小和形状;
  • 通过direction参数,可以控制圆锥的朝向;
  • show_basev_rangeu_mincheckerboard_colors参数则提供了对圆锥视觉表现的进一步定制。

2. 主要方法

Cone类有两个自己特有的改变方向的方法:

名称 说明
get_direction 用于获取圆锥体的方向向量。这个方向向量通常是一个三维向量,表示圆锥体在空间中的朝向。
set_direction 用于设置圆锥体的方向向量。通过传入一个新的三维向量,可以改变圆锥体在空间中的朝向。

3. 使用示例

下面的示例将展示如何创建圆锥体对象、设置其参数、以及调用其方法来改变圆锥体的属性或进行动画。

3.1. 基本的圆锥体

本示例展示了如何在Manim场景中创建一个基本的圆锥体。

圆锥体具有指定的底面半径和高度,并且默认方向朝上。

# 创建一个底面半径为1,高度为2的圆锥体,
# 方向朝上(默认方向)
cone = Cone(base_radius=1, height=2)

3.2. 自定义圆锥体

在此示例中,创建了一个圆锥体,并对其进行了自定义设置。

这包括设置圆锥体的填充颜色边框颜色边框宽度,以及将其移动到场景中的特定位置

这样,圆锥体不仅具有独特的外观,还位于用户指定的位置。

# 创建一个底面半径为1.5,高度为3的圆锥体,
# 设置填充颜色和边框颜色
cone = Cone(
    base_radius=1.5,
    height=3,
    fill_color=RED,
    stroke_color=YELLOW,
    stroke_width=2,
)
# 将圆锥体移动到场景中的特定位置
cone.move_to(np.array([1, 1, 1]))

3.3. 旋转和缩放

这个示例演示了如何为圆锥体添加动画效果。

首先,创建了一个圆锥体,并随后应用了两种动画:旋转和缩放。

圆锥体先绕y轴旋转了一定角度,然后按比例放大。

# 创建一个底面半径为1,高度为2的圆锥体
cone = Cone(
    base_radius=1,
    height=2,
    fill_color=BLUE,
)
# 将圆锥体添加到场景中
self.play(Create(cone))
# 创建旋转动画,绕y轴旋转90度
self.play(
    Rotate(
        cone,
        axis=Y_AXIS,
        angle=PI / 2,
    ),
)
# 创建缩放动画,将圆锥体放大1.5倍
self.play(cone.animate.scale(1.5))

3.4. 复制和排列

此示例展示了如何复制圆锥体并将其排列成一行。

首先,创建了一个圆锥体作为模板,然后使用循环创建了多个该圆锥体的副本,并将它们稍微移动位置以排列成一行。

# 创建一个底面半径为0.5,高度为1的圆锥体作为模板
cone_tpl = Cone(
    base_radius=0.5,
    height=1,
    fill_color=GREEN,
)
# 创建一个圆锥体数组,
# 每个圆锥体都是模板的复制,并稍微移动位置
cones = VGroup(
    *[cone_tpl.copy().move_to([i, 0, 0]) for i in range(5)]
)
# 将圆锥体数组添加到场景中
self.play(Create(cones))
# 整个圆锥体数组一起移动
self.play(cones.animate.shift(LEFT * 3))

4. 附件

文中的代码只是关键部分的截取,完整的代码共享在网盘中(cone.py),

下载地址: 完整代码 (访问密码: 6872)

标签:圆锥体,Cone,--,创建,边学,base,圆锥,manim,cone
From: https://www.cnblogs.com/wang_yb/p/18547304

相关文章

  • 鸿蒙
    Harmony-OS-ArkUI声明式UI开发一、基础组件(一)容器组件TextButtonImageImageAnimatorTextAreaTextInputRichTextDividerBlank(二)绘制组件RadioCheckboxCheckboxGroupTextPickerTimePickerDatePickerStepperStepperItemProgressCircleLoadingProgress......
  • 远光天鹿:重塑数字化时代软件设计新体验
    在当今数字化时代,用户体验已成为衡量软件产品成功与否的关键指标。然而,传统的软件设计模式存在流程繁琐、效率低下、资源浪费等弊端,严重制约了产品创新的步伐。为此,远光软件创新推出高效智能的用户体验创新平台——远光天鹿。 传统设计模式的挑战传统软件设计模式涵盖需求分......
  • xshell上实现:MongoDB文档查询
    实验内容概述    本实验旨在了解MongoDB文档数据库的基本操作,包括创建集合、插入文档数据和执行文档查询操作。实验环境:Linux(Centos7)xshell7Mongodb实验目的理解MongoDB文档数据库的基本概念和特性。掌握在MongoDB中创建集合和插入文档数据的方法。学习使用Mongo......
  • xshell7上实现MapReduce初级编程实践:对给定的表格进行信息挖掘
      实验环境:操作系统:Linux(Centos7);  Xsell7Hadoop版本:3.4.0(这里的版本根据自己的修改,可能小部分版本的Hadoop不适用于本文实验)下面给出一个child-parent的表格,要求挖掘其中的父子辈关系,给出祖孙辈关系的表格。输入文件内容如下:(保证之间空格为1,否则可能输出会出错)chi......
  • 【Windows】如何批量重命名文件?`ren`命令让你事半功倍
    如何批量重命名文件?ren命令让你事半功倍在日常工作中,我们经常需要对文件进行重命名,尤其是面对大量文件时,手动操作会非常耗时。Windows提供的ren命令可以轻松实现批量重命名的需求,让你事半功倍。本文将带你全面了解ren命令的使用方法,并提供几个实际应用场景,帮助你提高......
  • 【开题报告】基于Springboot+vue相机品牌在线商城(程序+源码+论文) 计算机毕业设计
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着电子商务的迅猛发展,越来越多的消费者倾向于在线购物,特别是在购买电子产品如相机这类高价值商品时。相机品牌在线商城作为电子商务的一个重要分支,......
  • 【ChatGPT】让ChatGPT生成批判性思维问题的回答
    让ChatGPT生成批判性思维问题的回答批判性思维是一种通过逻辑推理、分析和评估信息来获得更深刻理解的能力。在与ChatGPT互动时,可以通过设计带有挑战性和多维度的问题,让它展示出对主题的深入探讨和批判性思维。本篇文章将提供如何利用Prompt设置来引导ChatGPT在回答时展现......
  • 帝国CMS过滤内容里面HTML字符简单的方法代码
    自定义函数在 /e/class/userfun.php 文件中添加以下代码:functionDELHTML($string){$string=preg_replace("'<script[^>]*?>.*?</script>'si","",$string);//去掉javascript$string=preg_replace("'<[\......
  • 【开题报告】基于Springboot+vue智能汽车租赁系统的设计与实现(程序+源码+论文) 计算机
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着科技的飞速发展和城市化进程的加快,智能汽车已经成为未来交通的重要趋势。智能汽车不仅具备传统汽车的行驶功能,更融入了先进的物联网、大数据、人......
  • zblogphp判断首页、列表页、内容页、单页、搜索页、tag页的代码
    判断代码示例{if$type=='index'&&$page=='1'}/*判断首页*/{if$type=='category'}/*判断分类页*/{if$type=='article'}/*判断内容页*/{if$type=='page'}/*判断独立页面*/{if$type=='author'}/*判断用户页*......