[Day 8] 2D世界中的数学 (一)

今日目标

  • 基本的数学函式库(向量与阵列)

要多少才够

从另一个角度看,我认为游戏中的从小小的让角色移动,到一些叹为观止的特效,背後都是由大量的数学转换而来的。

如果要达上述所说,让角色移动,据我所知就是向量矩阵了,也是数学中,线性代数这一块,向量的话,二维就够了,矩阵的话,虽然「应该」不太会有3D的要处理,但就我所知,相机视角相关的运算,还是会需要4x4的运算。

今天只是先把一些基本的功能写起来,之後会用到。

向量

向量的话我这边对二维的目前就先处理几个

V2f V2fAdd(V2f a, V2f b);
V2f V2fSub(V2f a, V2f b);
V2f V2fScalef(V2f a, float f);
float V2fDot(V2f a, V2f b);
float V2fLen(V2f v);
V2f V2fNorm(V2f v);
float V2fDist(V2f a, V2f b);

然後就是依照自己的数学知识填写功能了,或是直接去google忘记的功能 :)

矩阵

矩阵就更少了,完成4x4矩阵的线性转换(Linear Transformation),之後可能会发现只要3x3就好(因为少一轴),但就线这样吧...

V4f Mat4MulV4f(Mat4 mat, V4f v);
Mat4 Mat4MulMat4(Mat4 m1, Mat4 m2);

完成了,但後面还有很多坑,感觉很遥远

写在这边为了让我整理一下,一些我听过的东西,但没有接触过,之後还有要处理的「数学」相关的东西。

  1. SIMD这个好像与与指令集有关,看起来是可以加快电脑数学运算的技术,我知道是电脑实际上只有0跟1,浮点数也是透过IEEE-754拼凑成的。
  2. 浮点数精度
  3. lerpslerp

说说「我认为的」程序与数学关系

当程序设计师数学要多好?

这个问题叨扰着很多刚学习程序语言的夥伴们,当然我也不例外。
通常,如果把这个问题拿到去问一些学长前辈,或是在社群媒体跟业界的大佬们,我比较常听到两种答案

  1. 不需要太好,高中甚至国中程度就够了,更多时候需要的是对资料结构、软件架构的掌握,或是与硬体相关组织结构的知识。
  2. 能有多少,就学多少,不会亏的。数学这个领域很庞大。

确实这两个答案我都信服,也走就达到了解答,但时不时还是会一直询问「数学要多好?」「数学要多好?」,不论是问自己,还是其他人,尤其是这在碰到正在学习「因工作原因,不得不学」的数学知识上,这个问题,比较像是从问「数学要多好?」,变成「我数学是不是真的很烂」。

後来,我忘记是从哪边来的,我听到了一个稍微不一样的答案:

Q: 当程序设计师数学要多好?我要怎麽像你一样厉害?

A: 你认为大老或是敬重的程序设计师,哪个你视为偶像的,觉得他的数学是差的。我没有特别厉害,只是一点一点从中试错而已,数学让很多人排斥没错,但你这学一点一点往前堆近。

参考

这样,简单的数学函式库就完成了,以兴趣的可以到我的github看看。


<<:  Motion Graphic 制作的基本流程

>>:  安全作业第一守则

予焦啦!问题分析

本节是以 Golang 上游 8854368cb076ea9a2b71c8b3c8f675a8e1...

【Day 23】与 DOM 的互动:Ref

Ref Ref 拥有以下特色: 不须重新渲染就可以更新值 直接抓取 DOM 来控制 DOM 的行为 ...

[17] 建立统一放资料的地方

建立一个放资料的地方,统一读取和写入这样比较方便 dataCenter.js const GetIn...

[Day 7] .Net WhenAll 底层(2)

前言 我们今天要试着解决昨天阅读 WhenAll 留下来的两个问题 为何要 "atomic...

Day-28 手把手的手写辨识模型 0x3:CNN is the end?模型大哉问

快到结尾了,再让笔者水一篇 XDD,今天我们来聊聊 CNN 会不会是深度学习领域的最後呢? CNN...