Python 中的花卉矩阵组合

news/2024/10/22 13:29:48/

使用场景描述 (rib) 协议编写脚本的基础知识。通过创建在 3D 空间中转换的基本几何图形,解决了 xyz 坐标系的基础知识。初步渲染是使用基本着色完成的,因此可以更容易地看到几何体。RenderMan

图1

图1

图 1 是我作为作业参考的示例图片,并尝试匹配 中的图片。为了完成这项任务,我使用了以下语言和工具:RenderMan

  1. Cutter(一个方便的文本编辑器,用于各种脚本语言,并与许多兼容的渲染器(例如,等)以及建模包(如Maya等)紧密集成。作者马尔科姆·凯森(Malcom Kesson)是SCAD的一位了不起的家伙,他是这个工具的作者,他也是我所关注的这些作业格式的幕后推手。这是他的链接:www.fundza.com 和 http://www.sfdm.scad.edu/faculty/mkesson/。RenderManPRMan3Delight
  2. Python(一种非常强大的语言,因其简洁、可移植性和更高级别的功能而迅速成为大多数 CG 应用程序的首选脚本语言)。从这里下载:Welcome to Python.org
  3. 3Delight(一个了不起的兼容渲染器,是你能得到的最好的渲染器,完全免费!从这里获取:3DelightRenderManRenderMan

对于这项任务,我将任务分为不同的阶段。以下是各个阶段及其详细信息以及代码片段。

第 1 步 - 向日葵的内部图案

在仔细观察参考图像中看到的向日葵(向日葵有很多变体,所以我只是坚持参考图像中的向日葵),可以看到这种向日葵在种子内部排列的方式上表现出非常奇特的图案。谷歌立即向我提供了更多信息。

Matlab 示例

因此,第一项任务是确定向日葵的内部图案,该图案遵循从向日葵的维基百科条目下载的matlab样本中显示的特定图案。它使用以下数学公式来形成此形状:

python"><span style="color:black"><span style="background-color:#fbedbb"><strong>// n=1:500;</strong>
<strong>// r=sqrt(n);</strong>
<strong>// t=137.5*pi/180*n;</strong>
<strong>// plot(r.*cos(t),r.*sin(t),<span style="color:purple">'</span><span style="color:purple">o'</span>)</strong></span></span>

使用刀具对肋骨进行原型设计,然后使用 Python 运行循环,我使用 Cone 原语(而不是在上面的 matlab 示例代码中绘制 '')来制作向日葵的种子图案。以下是代码片段和呈现视图:o

python"><span style="color:#111111"><span style="color:black"><span style="background-color:#fbedbb">// While(n < div):
//    p=0.1
//    r=0.25*sqrt(n)
//    a=137.5*pi/180*n
//    X=r*cos(a)
//    Y=r*sin(a)
//    Z=6-(N/div)*6
//    Riattributebegin()
//    Riscale(a/div,a/div,a/div)
//    Ritranslate(x,y,z)
//    RiColor((0.63921568627450980392156862745098,
//             0.50980392156862745098039215686275,
//             0.13725490196078431372549019607843))
//    RiCone(0.2,0.2,360)
//    Riattributeend()
//    n=n+1</span></span></span>

上面的 matlab 代码只会在 2D(XY 平面)中绘制种子图案,但实际上,种子排列在球体上而不是平面上。人们可以使用真正的球面坐标来找到球体顶部锥体的分布,但相反,我作弊了,只是在圆锥体分布的假想球体的半径和这个球体的原点(在本例中为零)之间使用了线性插值。插值因子是上述循环中使用的逐渐增加的半径。这样一来,当 matlab 示例代码通过将半径计算为循环迭代器的平方根来不断增加半径时,我不断将种子坐标的值一直减小到零,以便给出一个“凹凸”形式,其中种子更靠近中心的相机,并在它们向边界移动时逐渐向后推。在计算出 x、y 和 z 坐标的适当值后,还使用线性插值计算比例因子,以给出锥体(种子)在向边界移动时放大的效果。最后,在绘制圆锥基元之前,使用适当的肋骨平移和缩放命令应用所有这些值。

第 2 步 - 随机化基于圆锥体的圆


http://www.ppmy.cn/news/1439685.html

相关文章

数据中台工具:企业数据管理的核心动力_光点科技

在数字经济时代&#xff0c;数据中台工具已经成为各大企业提升效率、优化决策的核心动力。通过集成、分析和管理企业内外的各种数据&#xff0c;数据中台工具不仅可以帮助企业洞察市场趋势&#xff0c;还能够预测用户行为&#xff0c;推动企业实现精准营销以及产品优化。本文将…

机器学习-异方差性是什么,如何克服异方差性?

异方差性&#xff08;Heteroscedasticity&#xff09;是指在回归模型中&#xff0c;随着自变量的变化&#xff0c;误差项的方差不是恒定的情况。简单来说&#xff0c;异方差性表示了随着自变量取值的不同&#xff0c;误差项的方差存在变化。 异方差性可能导致以下问题&#xff…

Spark 基础

/* Why Spark一、MapReduce编程模型的局限性1、繁杂&#xff1a;只有Map和Reduce两个操作&#xff0c;复杂的逻辑需要大量的样板代码2、处理效率低&#xff1a;2.1、Map中间结果写磁盘&#xff0c;Reduce写HDFS&#xff0c;多个Map通过HDFS交换数据2.2、任务调度与启动开销大3、…

安卓玩机工具推荐----MTK芯片 简单制作线刷包 备份分区 备份基带 去除锁类 推荐工具操作解析

工具说明 在前面几期mtk芯片类玩机工具中解析过如何无官方固件从手机抽包 制作线刷包的步骤&#xff0c;类似的工具与操作有很多种。演示的只是本人片面的理解与一些步骤解析。mtk芯片机型抽包关键点在于..mt*****txt的分区地址段引导和 perloader临时分区引导。前面几期都是需…

【提示学习】PromptSync论文问题汇总

文章目录 PromptSync: Bridging Domain Gaps in Vision-Language Models through Class-Aware Prototype Alignment and Discrimination&#xff08;2024CVPR&#xff09;1 Introduction2 Related Work2.1 CLIP2.2 TPT 3 Methodology3.1 提出方法PromptSync3.2 类感知原型生成&…

AMBA-CHI协议详解(二)

《AMBA 5 CHI Architecture Specification》 文章目录 2.1 Channels综述2.2 Channel域段2.2.1 request fields2.2.2 Response fields2.2.3 Snoop request fields2.2.4 Data fields 2.3 事务结构2.3.1 Read transactions2.3.1.1 Allocating Read2.3.1.2 Non-allocating Read 2.…

LeetCode 0039.组合总和:回溯 + 剪枝

【LetMeFly】39.组合总和&#xff1a;回溯 剪枝 力扣题目链接&#xff1a;https://leetcode.cn/problems/combination-sum/ 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合…

【后端学习笔记·Golang】手机短信验证

文章目录 手机号码验证前置准备开通阿里云sms服务获取AccessKey并下载sdk 生成随机验证码将验证码发送到用户手机接口发送验证码校验验证码 手机号码验证 流程&#xff1a; 接收用户请求后生成随机验证码&#xff0c;并将验证码存入Redis中&#xff0c;并设置TTL通过阿里云sd…