2010-10-15 98 views
8

我明白sincos(以及其他一些三角函数)的意思,但我并没有真正明白他们解决了什么样的问题。当你在游戏开发(特别是3D游戏开发)中使用这些功能时,你能向我展示一些真实世界的例子吗?三角函数和游戏开发

谢谢。

+2

这真的是一个更适合GameDev StackExchange(http://gamedev.stackexchange.com/)的问题,但这里有一个链接可能对您的研究有帮助:http://pixwiki.bafsoft.com/ mags/5/articles/circle/sincos.htm – 2010-10-15 23:51:10

+0

虽然我会告诉你。在Unity/UDK和其他游戏引擎中,类似于实时完成的sin,cos和数学函数在资源方面成本最高。特别适用于手机游戏开发。我通过多种资源了解到,由于成本问题,将这些呼叫降到最低!当然,绘制电话和聚合物胜过它们,但数学函数紧随其后。 – ApolloSoftware 2013-07-15 18:02:57

回答

11

在游戏开发中,有很多情况需要使用三角函数。在编写游戏时,您经常需要做一些事情,比如找到两点之间的距离或让对象移动。下面是几个例子:

  • 旋转飞船或其他车辆

  • 妥善处理从一个旋转武器

  • 射弹计算新的轨迹的轨迹两个物体之间的碰撞后如台球或头球

  • 确定两个物体之间是否发生碰撞

  • 查找轨迹的角度(给定的物体的速度在x方向和y方向)

这里的一个很好的链接到different areas of Math required in various types of video game development

检查这些链接进一步阅读:

1

那么,我想到的一个应用程序就是用于游戏中的特殊效果......假设你有武器,咒语或能力,或者各种效果,使得光束...你可以玩数学“形状梁”... ...

同样的道理,假设你有一个门户网站,你想在激活或入口时播放一些整洁的动画,你可以玩矢量和旋转矩阵,你可以用数学和你的想象力结合做出许多惊人的事情......

3

2D或3D空间中的游戏需要图形的几何图形。用于模拟运动的物理引擎忠实地需要几何。 Trig是几何图形的基础。

采取一些简单的弹跳。弹丸撞击和墙壁反弹的物理过程将很快使你确信触发函数的实用性。

5

3D模型由顶点(3D空间中的坐标对或三元组的数值列表)和连接它们的线定义。这些线条可以渲染,点亮,纹理化等。

为了旋转对象,您必须能够操作这些顶点。如果你想旋转一个物体一些度数或弧度,你将有吨使用三角函数来找出它发生的地方。

基本触发是游戏,模拟等所需的任何3D操作的基础。如果这些功能,它们的局限性以及它们如何应用于和放大几何的有效性,那么值得您花时间调查并熟悉真正意义,信号处理等。

这是一个很好的问题;大多数人只是点头表示,表现得很明显。除非你的名字是Blaise或Renee,否则可能不是。

3

三角是至关重要的,以产生几乎所有的曲线(如在从椭圆或圆形),因此在游戏开发中有着广泛的用途。此外,正弦波对佩林噪音和许多其他特殊效果都很有用。

3

一个例子使用三角函数是在旋转矩阵

例如

该矩阵用于在x,围绕原点y平面旋转的点。

|x'| = | cos a -sin a | | x | 
|y'| | sin a  cos a | | y | 
  • X,Y原始点
  • X 'Y' 翻译点
  • 一个角度逆时针旋转
7

最明显的用途三角的是让一个对象在任何给定的方向上移动,而不用三角函数,这是不可能的。

//Example code, will move the object speed units in the given direction (degrees) 
d2r = pi/180; //Conversion from degrees to radians 
this.x += speed * cos (direction * d2r); 
this.y += speed *-sin (direction * d2r); 

它也用于其他的东西,如:在2D精灵

  • 执行变换以创建转动。
  • 非常广泛地用于投影3d视图。
  • 由于正弦波的形状,它可用于创建2个值之间的平滑过渡。
  • 为了音频合成的目的而创建正弦波。
  • 绘制圆形和圆形等圆形对象。
  • 确定枢轴上的一个点的位置。
3

编写一个绘制和更新模拟时钟的程序。

你这样做时遇到的问题应该给你答案你的问题。如果你对罪和cos有一个基本的理解,你应该能够使用它们来使时钟绘图变得非常简单。

如果这不能给你你的答案,请尝试绘制它没有罪和COS。