Questions tagged «mathematics»

数学问题涉及游戏开发中使用的算术,几何,微积分,公式和其他计算。


1
变形表面
我正在尝试完成水平曲面的变形物理行为,但到目前为止,尚不知道如何从实现开始。 无论表面的形状(平面,立方体,球体……)如何,我都希望在游戏实体(玩家,敌人,物体……)的位置上有小凹痕。 解释起来有点复杂,所以我说明了我在说什么,这是一个带有球体的示例: 因此,这些表面应该能够使其自身稍微变形(看起来像是真正柔软的床或沙发)。我的曲面可能需要很高的顶点数才能获得平滑的变形,但是我的大问题是计算该变形的数学方法。 我正在用OpenGL用C / C ++进行编程,但是在正确方向上的任何建议都可以。

3
随机图生成-散布/聚类随机节点的策略
我正在太空中做一个简单的4X策略游戏,其中每个节点都是一个兴趣点(行星,小行星等)。 要随机生成地图,请按照以下步骤操作 确定地图每个节点的类型(例如,可能有5个类似地球的行星,10个贫瘠的行星等) 将每种类型的节点放置在地图上。 对于第2步,我希望每种节点类型的分布均匀。因此,例如,我将从放置所有类似地球的行星开始。如果我简单地做一个rand(map.width,map.height)来确定位置,我可能最终会把所有类地球的行星聚在一起,这将使从该区域开始的玩家受益。 是否有任何方法(例如使用不同的图形函数或噪声函数)可以生成彼此分散的(x,y)坐标序列。同样,有什么方法可以生成彼此接近的坐标?

1
将空气阻力添加到高尔夫球轨迹方程中
我正在VB.NET 2005中开发2D高尔夫游戏,但是我对如何实施会影响球的空气或风阻力感到困惑。 我已经有了射弹的这些方程式: v0v0v_0为击打或击打时高尔夫球的初始速度 垂直和水平分量高尔夫球的速度: vXvÿ= v0cos(θ)=v0sin(θ)−gt∗vx=v0cos(θ)vy=v0sin(θ)−gt∗ \begin{align} v_x &= v_0 cos(\theta) \\ v_y &= v_0 sin(\theta) - gt* \end{align} 高尔夫球的垂直和水平距离: xy=v0cos(θ)t=v0sin(θ)t−(0.5)gt2x=v0cos(θ)ty=v0sin(θ)t−(0.5)gt2 \begin{align} x &= v_0cos(\theta)t \\ y &= v_0sin(\theta) t - (0.5)gt^2 \end{align} 如何在此方程式中增加空气阻力以适当影响高尔夫球的速度?我不知道该怎么做,有人处理过类似的方程式吗?

2
如何从转换矩阵中提取方向?
我有一个4x4的转换矩阵M,我想找出通过M转换后的球体的形状。(球体在原点,半径为1。) 我知道只要将M乘以(0,0,0,1)就可以找到中心。 但是,由于M可以挤压和旋转球体,因此半径成为问题。如何找出所得椭球的新半径?有什么办法找出方向吗? 更具体地说,我需要知道包围转换后的球体的边界球体的大小。换句话说,| M * V-M *(0,0,0,1)|的最大值是多少,其中V是单位矢量(原始球体上的一个点)。


5
为什么在Vector3s中不能使用运算符'> ='?
我正在尝试获得一个矩形,以便在我称为_positionA和的两个位置之间移动_positionB。两者都是类型Vector3。矩形移动得很好。但是,到达时_positionB它不会像应该的那样朝相反的方向移动。 我回到代码中看一看。我得出的结论是,随着对象的移动,if代码中的语句错过了rects位置等于的框架_positionB。如果rects的位置大于或等于, 我决定将代码修改为反向_positionB。我的代码不太长,因此我将在下面显示它: using UnityEngine; using System.Collections; public class Rectangle : MonoBehaviour { private Vector3 _positionA = new Vector3(-0.97f, -4.28f); //Start position private Vector3 _positionB = new Vector3(11.87f, -4.28f); //End position private Transform _rect_tfm; private bool _atPosA = false, _atPosB = false; public Vector2 speed = new Vector2(1f, 0f); private …
9 unity  c#  vector  mathematics  vector  matrix  unity  c#  transformation  java  3d  terrain-rendering  shading  ios  opengl-es  opengl  rendering  optimization  python  scripting  minecraft-modding  modding  pc  3d-meshes  mesh  culling  point-cloud  networking  interpolation  mathematics  game-design  ai  game-mechanics  animation  unreal-4  skeletal-animation  3dsmax  unity  c#  3d  opengl  c++  textures  unity  ide  cocos2d  cocos2d-x-js  unity  c#  mono  il2cpp  c++  game-loop  timer  linux  flash  actionscript-3  java  glsl  c++  vector  entity-component  c++  directx11  windows  visual-studio  libgdx  mouse  unity  c#  architecture  storage  unity  c#  rotation  coordinates  quaternion  vrpn  movement  vector  unreal-4  unity  shaders  unity  gui  text  bug  shooter  3d  animation  rendering  voxels  c++  mmo  multithreading  linux  textures  procedural-generation  terrain-rendering  multiplayer  mmo  game-state  java  android  libgdx  opengl  procedural-generation  unity  gui  3d  animation  tools  geometry-shader  mobile  advertisements  unity  c#  animation  scripting  unity  animation  unityscript  coroutines  unity  shaders  lighting  camera 

2
恒定时间制导导弹
我正在用玩家和导弹制作游戏。 我想从P1向P2发射导弹。导弹应始终仅花费五秒钟即可到达P2。导弹还应该跟踪P2。如果P2移得更远,则导弹必须加快速度以满足时序约束。如果P2向左移动,则导弹必须向左移动(并同时改变速度)。如果P2靠近P1,则导弹必须减速。 这可能吗?做到这一点的最佳方法是什么? 我目前没有Vector2D类(这实际上不是游戏,但是类推效果很好),因此,如果可能的话,我想要一个不需要的解决方案。 编辑:这实际上也不是导弹。:) 谢谢!

2
有人可以解释双重轮廓吗?
我一直在尝试了解体素渲染,并一直在研究双重轮廓(DC)。 到目前为止,我对此非常了解: 对一组网格点运行密度函数(即噪声函数) 查找网格中哪些边缘包含端点之间的变化 从这些边缘创建交点(即矢量) 现在这是我遇到的问题,接下来是生成法线,但是如何?在查看此主题时,此图像通常会出现。 研究表明,法线将从等值面生成。认为我从噪声到等值面再到法线是否正确?如果是这样,我将如何完成每个步骤? 据我了解,下一步将是DC论文中的以下内容; 对于每个显示符号变化的边,生成一个四边形,连接包含该边的四个立方体的最小顶点。 上面的图片代表这个报价吗? 最后,下一步是使用相交点和法线运行QEF,这将生成我的顶点数据。它是否正确?

1
3D相机旋转
拜托,请原谅我,但我需要帮助,而我在这个问题上已经停留了几个星期,我没有取得任何进展,无论我走到哪里,我都会看到一个不同的答案,我尝试的所有方法都无法正常工作。我已经有了足够的技巧和建议,现在我真的只需要一个人给我答案,我就可以从此倒退,因为我不明白这一点。 使该主题最令人困惑的是每个人使用一组不同的约定或规则的方式,他们的答案基于他们自己的约定而没有定义它们的含义。 因此,这是我根据似乎最常见和合乎逻辑的内容形成的一组约定: 轴的右手法则。 正Y向上,正Z朝向观看者,正X朝向右侧。 行主矩阵,发送到着色器时转置。 螺距:绕X轴旋转 偏航:绕y轴旋转 滚动:绕z轴旋转 轮换顺序:横摇,俯仰,偏航(这是正确的吗?有人可以对此进行检查吗?) 从轴的正端向下看,正旋转值会导致顺时针旋转。 沿所有轴旋转0的默认方向是向下指向负Y的向量。 ..鉴于这些约定(如果它们约定不对,请务必纠正我!),如何做: 写一个LookAt函数?(lookAt(矢量位置,矢量眼焦点,矢量向上)) 计算旋转矩阵。(旋转(x,y,z)) 至少在过去的3周内,我尝试自己回答了这两个问题,我至少重写了LookAt&Rotation Matrix函数30次,测试了数十种方法,并通读了我所见过的材料。数百个网站,阅读了许多回答的问题,复制了别人的代码,到目前为止,我所做的一切都没有奏效,所有事情都产生了错误的结果。其中一些产生了一些非常怪异的输出,甚至没有接近正确的旋转。 除昨晚外,我每天晚上都在为此工作,因为我对反复的失败感到非常沮丧,不得不停下来休息一下。 拜托,请告诉我正确的方法是什么,以便我可以逆向工作并弄清楚它是如何工作的,我只是没有得到正确的答案,这使我有些疯狂! 我正在用Java编写,但是我会接受用任何语言编写的代码,我的大多数3D渲染代码实际上都运行得非常出色,这只是我无法理解的数学。 更新:已解决 感谢您的帮助!现在,我有了一个我真正理解的可以正常工作的LookAt函数,而且我再也高兴不起来了(如果有人想问一下,请问)。 我确实曾尝试过根据俯仰/偏航/侧倾变量创建旋转矩阵,但它似乎还是失败了,但是我决定放弃尝试将euler角用于freelook相机,因为它似乎不适合用于角色,而不是我要创建一个四元数类,沿着这条路径走运可能会更好,否则,我将诉诸于使用螺距/偏航作为球面坐标,并依靠新的工作LookAt函数进行旋转。 如果还有其他人遇到类似的问题并想问我问题,请随时。 至少我不会再受困了,谢谢您的帮助!

3
绑带旋转镜
我使用以下代码旋转游戏角色以观看目标: transform.rotation = Quaternion.Slerp(startQuaternion, lookQuaternion, turningNormalizer*turningSpeed/10f) startQuaternion是给定新目标时角色的当前旋转。 lookQuaternion是角色应查看的方向,其设置如下: destinationVector = currentWaypoint.transform.position - transform.position; lookQuaternion = Quaternion.LookRotation(destinationVector, Vector3.up); TurningNormalizer只是Time.deltaTime增加,并且turningSpeed是编辑器中给定的静态值。 问题在于,尽管角色在大多数情况下都应该旋转,但在必须接近180度时仍存在问题。然后它有时会抖动并镜像旋转: 在此绘制效果不佳的图像中,角色(右侧)开始转向左侧的圆圈。不仅仅是左右旋转,它还可以启动“镜舞”: 它开始向新面貌旋转 然后突然突然以相同的角度但在另一侧并继续旋转 它执行此“镜像”的时间很长,直到它看着目标为止。这是带有四元数的东西吗? 编辑1: 显然问题不是由旋转本身引起的。更有可能的问题是,角色在旋转时会朝着面部移动。作为限制角度,当允许角色移动时,面对和目标之间的角度会减少,并且有时会消除抖动/镜像旋转。 这当然引发了更多的问题,为什么角色不能同时没有问题地同时移动和旋转呢?机芯使用的代码: transform.Translate(Vector3.forward * runningSpeed/10f * Time.deltaTime);

2
无人机定位
想象一个“无人机”和一个二维平面上的目标点。有八个参数: P = my position Q = target position V = my velocity I = my moment of inertia w = my angular velocity s = my angular position T = max thrust U = max torque (我们只是说目标是固定的) 无人机的工作是尽可能快地到达目标,并遵守最大扭矩和最大推力。只有两种方式施加扭矩,因为这仅在2d平面中。推力仅限于相对于飞行器方向的一个方向,并且不旋转无人机就无法瞄准。忽略任何阻力,您可以假装它在2D外部空间中漂浮。假设无人机t每隔一段时间(例如每0.01秒一次)检查一个方程式,插入参数,并相应地调整其扭矩和推力。推力和扭矩方程应该是什么?

5
直线可以称为多边形吗?
根据多边形的定义,如果连接了折线的第一个点和最后一个点,则称为多边形。参见下图。我有P1,...。P5折线。如果我从P5到P1画一条线,那么它会被称为多边形吗?我在这里很困惑。

2
太阳运动功能?
因此,考虑到将太阳精灵设置在地平线上(x = 0,y = worldheight / 2),我试图设计一个使太阳升起然后掉落的函数。 最好的方法是使用sin函数,但我不知道如何使用它。 如果使用y = sin(x),则对于完整的曲线,x的范围必须在0到pi之间,而对于X的速度必须恒定。 有什么想法或建议吗? 编辑:谢谢大家!


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.