Jesus!
我的上帝!
Nope, not Jesus. It’s just me.
不 不是上帝 是我回来了
What the hell is going on?
你都干了些啥?
Ah, yeah… yeah. I was recounting this program.
啊 对…… 对 我在重新编写这个程序
And yeah… yeah…. yeah. I think I figured it out.
还有对…… 对…… 对 我觉得我知道怎么解决它了
I think I’ve got the formula.
我已经想到了对应的公式
So basically, if you merge the projection equation,
基本上 只要把投影方程加进来的话
Wait, wait, wait…
等等 等等 等等……
What ARE you doing?
你到底在干什么?
Oh, right. Emm… Okay, let me just show you this.
噢 好了 嗯…… 现在让我来给你看看这个
Let me just finish up real quick.
再给我一点时间把这个写完
Ready?
准备好了吗?
[Click]
[敲击]
Wait…, I, I, I don’t follow this.
等一下…… 我 我 我不是很懂这是个啥
– It’s that a… – It’s a donut!
– 这是个…… – 这是个甜甜圈!
It’s incredible, isn’ it?
这让人难以置信 对吗?
So… so all this, just to render a donut
所以…所以你整的这些东西 就是为了在你的终端上
on your terminal?
画一个甜甜圈?
What the fu…
去他娘……
Thanks for watching.
感谢观看
The idea and code were orginally from the amazing Andy Sloane,
这个想法和代码出自于令人惊叹的Andy Sloane
where he was able to code this whole program in C,
他用C语言编写了整个程序
and make the code itself look like a donut.
并让代码本身看起来像个甜甜圈
He had an article explaining how the code works,
他写了一篇文章解释了这个代码的原理
which I’ll link it in description.
我会把文章链接放在视频描述中
So why is maths important for programming?
所以为什么数学对于编程来说很重要呢?
Well, It’s because even if
这是因为虽然
99% of the time you won’t need it.
99%的时候你编程都不需要用到数学
There’s a 1% chance that you might.
但还是有1%的时候你可能会用到它
And it’s in those moments that seperate out
就是这1%的部分
a great programmer from average ones.
把一个优秀的程序员和普通程序员区分开来
And if you do know your maths,
而且如果你数学很好
you’ll know how to modify this donut to increase the size,
你就会知道怎么修改代码来增加甜甜圈的大小
change the rotation or even make a cube instead.
改变它旋转的方向或者甚至把它变成一个立方体
Also, If you want to do computer graphics,
另外 如果你想掌握计算机图形学
machine learning or cryptography,
机器学习或者密码系统
you all gonna need maths.
这都需要用到数学
So might as well get good at it, as you did for programming.
所以可能你需要让你的数学水平和编程水平一样好
Anyway, back to the donut,
不管怎样 我们说回到那个甜甜圈
how do you write this program?
你要怎么写出这个程序呢?
Well, first you have to create a donut,
首先你必须创造一个甜甜圈
which is essentially a solid of revolution,
它得是一个旋转体
where we have a circle
我们要先画一个圆
that rotates around the Y axis,
它以Y轴为轴心转动
which will make a donut.
这样就可以做出一个甜甜圈
AKA a torus.
也可以说是一个圆环面
This is the formula to create the circle
这是创建圆形的公式
centred at R2 with the radians R1.
以R2为圆心 R1为圆弧
And this is a rotation matrix
这是一个旋转矩阵
to rotate the circle around the Y axis.
使圆绕着Y轴转动
So when we combine them,
所以当我们合并它们
we get the coordinates of every point on your donut.
我们会得到甜甜圈上每一个点的坐标
Now that we have a donut.
现在这里有一个甜甜圈
Shut up, I know this is a bagel.
住嘴 我知道这是一个贝果
Now that we have a donut.
现在我们假设它就是一个甜甜圈
We want to rotate it around the X and Z axis.
我们想要让它同时绕着X轴和Z轴旋转
So it looks cool, all flying and staff.
这样看起来很酷 整个甜甜圈在空中飞旋
We can do that by multiplying our donut coordinates
我们可以通过这两个旋转矩阵
with these two rotation matrixes.
来增加甜甜圈的坐标从而达成目的
Now we have to map this 3D flying donut,
现在我们必须把这个飞行的3D甜甜圈
onto a 2D screen,
绘制到一个2D的屏幕
which will become our terminal.
也就是我们的终端上面去
So each character on the terminal,
所以终端上的每一个元素
will be a pixel on the the screen.
都会是屏幕上的一个像素点
To figure out how to shade our donut,
为了弄清楚如何塑造出我们的甜甜圈
We calculate the Dot Product of the surface normal
我们要计算它表面法线的点积
and the direction of the light.
和光线的方向
So as you can see, when the normal points this way,
你可以看到 当法线指向这个方向
its way brighter.
这里就会更亮
And when I point at that way, its way darker.
如果它指向那个方向 那里就会更暗
So the Dot Product will tell us how light or dark it is.
所以点积结果可以告诉我们甜甜圈每个部分的明暗程度
We take the result of the Dot Product,
我们取出点积的结果
and map it into these characters
把它们带入到这些符号中
from darkness to brightness.
数字从小到大表示光线从暗到亮
And lastly, we draw that on our terminal.
最后 我们把这些在终端上画出来
And voila.
然后 完成啦
If you like the way I teach,
如果你喜欢我教学的方式
you can check out my new course on Data Structures and Algorithm,
可以在数据结构和算法上找到我的新课程
where I use easy to understand animations
在那里我用了一些容易理解的动画
to explain these concepts.
去解释这些概念
First 100 people to sign up for Joma Class will get 15% off.
前100个注册Joma课堂的人可以得到15%的折扣
JOMA CLASS
JOMA课堂

相关热播

  • 2021-08-241千兆是多少个字节?Computers today, can hold a lot of information;现在的计算机可以存储很多信息 the terminology can get confusing.但相关术语可能让人困惑 Gigabytes,GB Terabytes,TB and what’s a Petabyte?还有PB都是什么? Let’s start at the be..
  • 2021-08-24扎克伯格给你解释什么是程序里的循环电脑非常擅长做的一件事就是重复执行指令One thing that computers are really good at is repeating commands. 作为一个人 如果连续的做同样的事很多次你会觉得格外厌烦As a person, you’d get really bored if you had to do the same thing lots of time..
  • 2021-08-24【用代数讲计算机科学】游戏中的组合判断蝙蝠Sam从屏幕的左边或右边离开Sam the Bat is safe from leaving the left side of the screen or from leaving the right 都是安全的side of the screen. 让我们把左安全函数和右安全函数结合起来Let’s combine the safe-left and safe-right fun..
  • 2021-08-24《机器学习Python实践》#5 回归预测What’s going on everybody!大家最近怎么样! Welcome to the fifth Machine Learning and fourth regression tutorial.欢迎来到机器学习第五讲及回归教程第四讲 In this tutorial we’ll be building on the last one这一讲我们要继续构建上一讲..
  • 2021-08-24《第37步》正式预告片IBM的计算机‘’深蓝‘’打败了加里·卡斯帕罗夫 李世石已经放弃了 这只人类队伍将与OpenAI展开5v5对决 AI研究的典型目标 一直都是创造一个终极算法 这个算法能解决遇到的任何问题 鉴于当前AI的快速发展 我们离实现这个目标越来越近 强化学习是机器学习中的一个分支 其目标是学习对所在环境做出反应 以最大化奖励信号 为了实现这一目标 人们提出了很多不同算法 其中很多算法都包含 对部分或全部环..
  • 2021-08-24[开发者快报] #65 Android Things开发者预览版3发布蒂莫西:大家好 我是蒂莫西·乔丹TIMOTHY JORDAN: Hello, I’m Timothy Jordan, 这里为您带来的是上周最新来自谷歌的and this is your update about the coolest developer news 最酷开发者新闻from Google in the last week. Android Things平台开发者预览版第..
  • 2021-08-24《机器学习Python实践》#3 回归的特征与标签好的 大家好 欢迎来到第三次机器学习课程alright, hello everybody, welcome to the third machine learning. 在第二次回归的课程中我留了个问题And second regression tutorial videos where we left off, 我问adjusted close这一列I was asking whether o..
  • 2021-08-24来自人们偏好的深度学习亲爱的学霸们 这里是由Károly Zsolnai Fehér 带来的两分钟论文Dear Fellow Scholars, this is Two Minute Papers with Károly Zsolnai-Fehér. 在这个新的人工智能时代 不乏关于人工智能安全性的文章和讨论In this new age of AI, there is no shortage of articles..
  • 2021-08-24HTML入门教程 学习HTML和CSS大家好 第一集是关于HTML和CSSHow’s it going, guys, to a first episode now to HTML and CSS. 这节课我们将要讨论什么是HTML和CSSNow this course here we’re going to talk about what HTML CSS is 以及如何用它来做完整的网站and how ca..
  • 2021-08-24《边学Python边学数据科学》#4 预测股票价格大家好 我是西拉杰 在这一集中 我们将会用Python的工具包Scikit-Learn 建立一个股价预测图 代码只有40行 你想过快速致富吗? 先生 我的模型非常赚钱 我经常重新训练防止模型过拟合 一周几次? 一周三次? 这一行的新手才这样 真的?您再训练的频率是? 早上锻炼后一次 午饭后一次 哦…… 股票市场允许你买卖公司的所有权单位 我们称之为股票 如果这家公司盈利增加 你会获得其中一部分 ..
  • 2021-08-24数据结构:#1 概述In this lesson and in this series of lessons,在本课程中 we will introduce you to the concept of data structures.我们将会向你介绍数据结构的概念 Data structure is the most fundamental数据结构是最基础的 and building block concept i..
  • 2021-08-2417/44 错误处理>> Now, if you’re anything like me and I know I am,如果你和我一样 是这样的情况 the first time that I get into write some code,当我第一次写代码的时候 sometimes things go wrong.有时会有一些问题 Now, maybe whatever it is that yo..

我要评论

    评论加载中...

译学馆所有视频和图片来自互联网版权归原创者所有。

加载中...