游戏和模拟是显而易见的答案。数学并不难,但显然存在着。例如,假设你想要构建某种小行星游戏。您需要确定您的太空船的位置。这是一个向量。现在您希望每帧以某个方向前进一定的方向。您需要将某种delta-x添加到x,并将delta-y添加到y,以使您的运动成为另一个向量:。在小行星游戏中,您会加速指向的方向,因此每当您按下“推力”键时,您都需要计算dx和dy的增量或加速度向量。
(是的,这与微积分课程中的dx相同,但现在我正在用它来构建机器人僵尸负鼠。)
但这还不是全部。如果您现在行动,我将加入一些三角函数。通常,您认为运动和加速度是角度和距离(r和theta),但编程语言通常需要这些值以dx,dy格式呈现。这就是您将使用一些三角函数的地方:dx = r * cos(theta)和dy = r * sin(theta)
但是,假设您想要有一个具有引力的行星?您需要以一种近似引力的方式来获得轨道行为(椭圆形轨道,发射更改轨道的另一侧的高度等)。如果您理解牛顿普遍引力定律,这样做最容易:f =((sqrt(m1 * m2))/ d ^ 2)* G。这告诉您每帧需要添加多少“向行星”的力量到您的飞船中。将该值乘以从太空船指向行星的归一化向量,并将其作为新的运动向量添加。
信不信由你,我鼓励不喜欢数学的人参加游戏编程课程。通常,他们会发现,在处理涉及太空中爆炸的奶牛之类的问题时,数学可能是(我敢说)有点有趣的。
再举一个例子,考虑优化声波。模拟波形具有无限数量的点。在数字信号中无法存储它们所有,因此我们将音频信号分成许多小段,然后测量每个段。如果我们想要完美的表示,那么就需要获取无限数量的无限小时间片。
将其绘制出来,您就创建了黎曼和,积分(事实上是微积分)的基本思想。
还有一个例子:我的一个朋友(生物学教授)试图构建一个湖泊生态系统的“模拟城市”风格模拟。他是一个不错的程序员,但却陷入了各种计算中。他希望用户可以改变对湖泊的使用(外置电机,钓鱼限制和倾倒限制),然后查看它如何影响氮和其他关键元素的水平。他尝试了各种疯狂的if-then结构,嵌套条件和丑陋的布尔逻辑,但从未有过干净的解决方案。
我们采用实际数据并使用Excel进行运算,找到了一条趋势线,通过简单的对数公式准确地反映了他的数据。数百行混乱的代码被简化成一个简单的公式。