ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

数学可视化终极入门:5个创意编程项目,一次搞懂用代码画心形与3D图形

数学可视化终极入门:5个创意编程项目,一次搞懂用代码画心形与3D图形 数学可视化终极入门5个创意编程项目一次搞懂用代码画心形与3D图形【免费下载链接】Awesome-Love-Code表白代码收藏馆~谁说程序猿不懂浪漫❤️项目地址: https://gitcode.com/gh_mirrors/aw/Awesome-Love-Code提到数学可视化很多人觉得这是数学家或图形学工程师的专利。但在这个名为 Awesome-Love-Code 的表白代码收藏馆里一串冷冰冰的公式能让屏幕瞬间变得温柔——你会亲眼看着一条心形曲线在坐标系里生长、跳动甚至从平面鼓成立体的玫瑰。想象一个场景纪念日快到了鲜花和礼物都送腻了你想送点别人送不了的东西——一段自己写的代码。可问题来了平时连函数图像都懒得看真的能用代码画心形吗这篇文章想告诉你能而且比你想象中简单。接下来我们会先看看这门手艺能做出什么再拆开它的数学外衣最后陪你完整走一遍从空白编辑器到成品的创作旅程。先别急着写代码看一眼数学可视化能做出什么动手之前先看两个项目里的成品。第一张是Python/005/用 matplotlib 渲染的 3D 立体心形——同一个公式从 2D 轮廓升级成 3D 模型层次感立刻不一样了第二张来自Python/007/是粒子系统的心形不用曲线而是用成千上万个随机点撒出一个立体的心密密麻麻的颗粒自带一种毛茸茸的质感。看到这里你可能会好奇这些画面背后到底是什么在起作用其实就两把钥匙。第一把叫参数方程。你可以把它理解成设定一条画笔走过的轨迹我们给画笔一个随时间 t 变化的坐标t 从 0 走到 2π画笔就沿着轨迹画出一道心形。第二把叫隐函数它更像是雕塑的模具——把三维空间里满足某个等式f(x,y,z)0的所有点抠出来就得到了一颗立体心。公式本身不画图图是从公式里长出来的。 记住一个心态参数方程负责画线隐函数负责造面。这两句话够你读懂后面所有代码。一段完整的创作之旅从空白编辑器到会跳动的 3D 心形现在我们把目标定小一点今晚亲手做出那颗红色的 3D 心形。整个过程其实像做一顿饭——先备料再下锅最后调味。首先把项目拿到本地在终端执行git clone https://gitcode.com/gh_mirrors/aw/Awesome-Love-Code然后走进Python/005/目录安装两个依赖库pip install numpy matplotlib。到这里材料备齐了。打开编辑器写下第一行代码。大多数绘图库的第一步动作都一样——把数学工具包请进来import numpy as np接下来是这道菜的灵魂心形隐函数它长这样def heart_3d(x, y, z): return (x**2 (9/4)*y**2 z**2 - 1)**3 \ - x**2*z**3 - (9/80)*y**2*z**3先别被这串式子吓到逐块看前面的(...)**3是主干定义了一个接近椭球的形状后面减去的两项是两刀削切——把顶部削出两个凹坑底部削出那个尖尖的心尖。整个公式做的事就是在三维空间里划出一个函数值恰好等于 0的曲面也就是心形的表面。公式有了怎么变成画面这里有个关键动作叫切片。想象 CT 扫描把三维空间切成几十层薄片每一层上用二维等高线找到函数值等于 0的位置再把所有切片叠起来立体心就出现了。Python/005/love.py里正是用meshgrid生成网格、用contour逐层画轮廓的——meshgrid就像给空间铺了一张渔网每个网眼都是一个候选点。跑起来之后你可能觉得这颗心还不够活。这时去看看MatLab/002/里的例子它演示了让心形跳动起来的诀窍在公式里藏一个随时间变化的参数 a每画完一帧就把画面保存下来循环 100 次最后拼成 GIF这个技巧总结起来就一句话动画 公式里加一个会变的参数 逐帧保存。频率决定跳动的快慢振幅决定波动的幅度相位决定起始的位置。参数化是数学可视化里最上瘾的旋钮调着调着天就亮了。灵感配方盒三个方向任你取用如果你不想止步于心形项目里还藏着不少配方。下面三张配方卡原料都是现成的照着做就能换口味。 配方一3D 渐变玫瑰进阶必试原料Python/004/code/下的 flower 系列脚本依赖pillow matplotlib numpy做法要点用双参数曲面替代单条曲线花瓣的卷曲靠指数函数和模运算营造一层包一层的层次感再自定义一张从花心到花瓣的颜色表渐变效果立刻出来可调口味改花瓣数量、改渐变色相范围甚至把玫瑰换成别的花 配方二粒子心形点云风格原料Python/007/main.py运行后会在output/生成 30 帧粒子图做法要点随机撒几万个点用心形函数当过滤器只保留落在表面附近的点再叠一层高斯模糊让颗粒柔和。它还顺带演示了最简单的相机投影——3D 点怎么落到 2D 画布上可调口味粒子数量、颜色色相代码里的hue参数、模糊程度。撒点密度不同作品气质完全不同 配方三网页版 3D 交互想直接发给别人看原料Web/007/里的 Three.js 版本浏览器直接打开index.html就能玩做法要点把同样的心形放进浏览器用 Three.js 做渲染鼠标拖动即可旋转——可交互是比静态图更进一步的情感杀伤力可调口味背景色、粒子材质、加一段入场动画 这三张卡对应三种思路曲面建模、粒子系统、Web 渲染。吃透任何一个你就不再是会抄代码而是会造代码。翻车现场与急救指南新手最容易在哪摔跤直接对号入座。心形看起来又扁又歪多半是坐标系没锁比例。2D 里加plt.axis(equal)3D 里设置等距坐标轴图形才不会失真。3D 图形一旋转就卡成 PPT网格分辨率太高了。把采样数从 100 降到 60肉眼几乎无差别速度却能翻倍。别忘了 NumPy 的向量化——能用数组运算就别写 for 循环。动画导出后糊成一团GIF 只有 256 种颜色帧率太低还会卡顿。把帧间隔调小、提高每帧分辨率比事后抢救有效得多。中文显示成方块绘图库默认字体不含中文字形。项目里Python/001/的做法很聪明——自带一个carton.ttf字体文件加载它就好。颜色大红大绿辣眼睛试试按色相取色而不是拍脑袋选 RGB。粒子心形那套 HSV 配色同一套逻辑能套用到大部分作品上。下一步往哪走看什么如果这次旅程点燃了你接下来的路线大致是这样先把Python/和MatLab/两个目录各挑一个例子跑通建立公式—画面的直觉再去看Web/下那些更花哨的页面理解同样的数学如何迁移到浏览器最后C/和Vbs/里还有用 C 和 VBScript 写的版本能让你意识到——数学可视化并不绑定任何一门语言。方向上想深入就啃参数方程与坐标变换想好玩就玩粒子系统想做作品就去研究颜色映射和构图。项目根目录的 README 就是一张地图每个编号目录都配有说明文档按图索骥即可。做完别忘了分享。把作品截图发出来配上一句这是我用公式画的比任何礼物都更有仪式感。结尾让公式替你开口回头看数学可视化并没有想象中高不可攀。它的全部秘密不过是参数方程画线、隐函数造面、参数驱动变化这三句话。Awesome-Love-Code 给了你足够多的起点但真正的配方永远在你自己手里——换个参数换个配色换个想法它就不再是别人的代码而是你的心意。今晚就试试吧。打开编辑器写下第一行import让公式替你开口。下一次纪念日你送出的将不再是一张截图而是一段你亲手编写的、会跳动的画面。❤️【免费下载链接】Awesome-Love-Code表白代码收藏馆~谁说程序猿不懂浪漫❤️项目地址: https://gitcode.com/gh_mirrors/aw/Awesome-Love-Code创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表