Questions tagged «mathematics»

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

7
我需要一个Point和一个Vector对象吗?还是仅使用Vector对象表示一个点就可以了?
在构造与朋友一起开发的引擎组件时(出于学习目的),我对此产生了疑问。 最初,我们有一个Point构造函数,如下所示: var Point = function( x, y ) { this.x = x; this.y = y; }; 但是他们开始向其中添加一些Vector数学,他们决定将其重命名为Vector2d。 但是现在,有些方法(至少在我看来)有点令人困惑,例如下面的方法,这些方法用来做一行: //before the renaming of Point to Vector2, the parameters were startingPoint and endingPoint Geometry.Line = function( startingVector, endingVector ) { //... }; 我应该为Point对象创建特定的构造函数,还是将点定义为向量没有问题? 我知道矢量具有大小和方向,但是我看到很多人使用矢量来表示对象的位置。

2
如何为图块网格生成导航网格?
我实际上还没有开始为此编写程序,但是我想看看我将如何去做。 假设我有一块瓷砖,所有尺寸都是相同的,有些是可穿越的,有些不是。我将如何从该网格创建多边形的导航网格? 我的想法是取出不可遍历的图块,并从那里的边缘延伸线以制成多边形……这就是我到目前为止所要做的。有什么建议吗?

1
确定Catmull-Rom花键的弧长以恒定速度移动
我有一条由Catmull-Rom样条线串联定义的路径。我在XNA中使用静态方法Vector2.CatmullRom,该方法允许在点之间进行插值,值从0到1。 并非该路径中的每个样条曲线都具有相同的长度。如果我沿路径前进时让每个样条的重物以恒定的速度移动,则会导致速度差异。我可以通过使重物的速度取决于花键的长度来对此进行补救。如何确定样条的长度?我是否应该通过将样条线切成10条直线并求和它们的长度来进行近似估算? 我将其用于在样条线定义的生成网格上进行动态纹理映射。

6
适用于游戏引擎的最佳C ++数学库?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我正在为我的游戏引擎寻找具有以下功能的快速开源C ++数学库: 快速(sse?) 向量 矩阵 四元数 适用于opengl和DirectX
18 c++  mathematics 

5
好的3D数学理论书籍[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我一直在为Source引擎开发一种修改,已经有一年多了,但是现在在武器,游戏动作(玩家物理)和爆炸物的玩家反馈方面遇到了一些麻烦。 这都是因为我数学上的弱点!!! 您可以推荐哪些书籍,教程或任何其他各种文本(对您有所帮助)。
17 3d  books  mathematics 

2
如何使用点积获得两个向量之间的夹角?
我正在学习在游戏中使用归一化向量。 我了解到,为了知道两个向量之间的角度,我可以使用点积。这给我一个介于-1和1之间的值,其中 1表示矢量平行并且面向相同方向(角度为180度)。 -1表示它们平行且面对相反的方向(仍为180度)。 0 表示它们之间的角度为90度。 我想知道如何将两个向量的点积转换为以度为单位的实际角度。例如,如果两个向量的点积为0.28,则0和360度之间的对应角度是多少?

1
故意造成不精确的复古/ NES风格物理学
背景: 我在为我的复古Platformer重制项目获得正确的跳跃曲线时遇到问题。原始游戏适用于NES,玩家的速度存储在两个独立的部分中:一个字节代表整数,另一个字节代表小数部分。 重力以0.25 /帧的速率添加到播放器的Y速度。 玩家跳跃时,其Y速度设置为-4.64453125。其余的跃迁曲线留给重力。 随着玩家的上升,他的垂直速度以0.25 /帧的速率收敛到0。但是,当玩家的速度达到小于零的值时,速度会按照不同的模式变化。它遵循以下模式,而不是每帧稳定减少0.25: [1.75, -0.25, -0.25, -0.25, 1.75, -0.25, -0.25, -0.25, 1.75, ...] 它似乎与整数溢出有关。 数据: 这是原始数据的转储。这是速度表。 Jump Curve Y-Hi Y-Lo Decimal Change/Frame 4 165 4.64453125 ? 4 101 4.39453125 -0.25 4 37 4.14453125 -0.25 3 229 3.89453125 -0.25 3 165 3.64453125 -0.25 3 101 3.39453125 -0.25 …

6
您如何并行化二维Boids模拟
您如何以这样的方式编写2D boids仿真程序,使其可以使用来自不同来源(群集,gpu)的处理能力。 在上面的示例中,无色粒子四处移动,直到它们聚集(黄色)并停止移动。 问题是,尽管左上方的实体不太可能与右下方的实体进行交互,但所有实体都可能彼此交互。如果将域划分为不同的段,则可能会加快整个过程的速度。但是,如果实体希望跨入另一个段,则可能会出现问题。 目前,该仿真可用于具有良好帧速率的5000个实体,如果可能,我想尝试使用数百万个实体。 可以使用四叉树进一步优化吗?还有其他建议吗?

3
按顺时针顺序对点数组进行排序
有没有一种算法可以按顺时针顺序对2D点数组进行排序? 在我的情况下,我专门处理直角三角形,所以只有3分。 但是我有兴趣知道是否存在这样的算法,如果不存在,那么按顺时针方向返回三角形的3个点的简单方法是什么? 编辑:我正在尝试相对于多边形的质心顺时针计算点,它是凸的。 更新: 这是我根据选择的答案最终使用的实现,它对性能没有要求,只是偶尔发生一次,因此可以解决。 ArrayList<PVector> pointList = new ArrayList<PVector>(); pointList.add(A); pointList.add(B); pointList.add(C); Collections.sort( pointList, new TriangleVectorComparator(origin) ); return pointList; // Comparator package triangleeditor; import java.util.Comparator; import processing.core.PVector; public class TriangleVectorComparator implements Comparator<PVector> { private PVector M; public TriangleVectorComparator(PVector origin) { M = origin; } public int compare(PVector o1, …

3
建立一个Plattformer-如何确定玩家是否被允许跳楼?
我正在构建一个简单的Plattformer Jump n'Run Style游戏。我不使用图块-而是为自己的关卡实体使用了几何形状(玩家也是如此)。我已经完成了碰撞检测代码,到目前为止一切正常。 接下来,我想实现跳跃。只需检查玩家是否按下适当的键并增加一些向上的速度即可。工作良好。但是即使播放器在空中也可以使用,这不是我想要的。;-) 因此,我必须检查玩家是否站立。我的第一个想法是检查最后一帧是否发生碰撞,并将玩家标记为“可以跳跃”,但是如果玩家在空中撞墙,这甚至会触发。由于我的数学技能不是很好,因此我寻求帮助-甚至提示也将如何实现这一点。 谢谢!

2
如何在两个向量之间线性插值?
我有一个速度矢量,我的客户在哪里,往哪里去,我有一个来自服务器的矢量,告诉客户应该在哪里。有时情况有所不同,因此我想在当前位置和服务器正确位置之间进行插值。 黑色箭头是客户端速度向量,红色箭头是服务器上的客户端速度向量,蓝色箭头是我要计算和插入的速度向量。 如何计算蓝色向量?那么,如何在它们之间进行线性插值?

1
*调用* =(或* =调用*)是否比编写单独的函数(对于数学库)要慢?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为话题成为Game Development Stack Exchange。 4年前关闭。 我有一些矢量类,其算术函数如下所示: template<typename T, typename U> auto operator*(const Vector3<T>& lhs, const Vector3<U>& rhs) { return Vector3<decltype(lhs.x*rhs.x)>( lhs.x + rhs.x, lhs.y + rhs.y, lhs.z + rhs.z ); } template<typename T, typename U> Vector3<T>& operator*=(Vector3<T>& lhs, const Vector3<U>& rhs) { lhs.x *= rhs.x; lhs.y *= rhs.y; …

6
如何围绕世界对齐的轴旋转对象?
我有一个Vector3,每个轴都有一个欧拉角。 通常,当我想创建旋转矩阵时,我将使用D3DXMatrixRotationX之类的函数从上方的旋转矢量传递相应的角度,然后将矩阵(ZXY)相乘以创建整体旋转矩阵,以用于形成完整的对象变换矩阵。 但是,此方法将在对象空间中产生一组旋转。也就是说,将向量(90,0,90)传递到我的方法中将在世界空间中有效地产生(90,90,0)的旋转。 有没有一种方法可以始终确保我的旋转矢量的每个分量导致围绕各自的世界空间对齐轴的旋转? 编辑: 这是当前情况的动画-我想要一种绕蓝色轴而不是红色轴旋转的方法。 编辑2: 只是要注意,我并不是在寻找涉及欧拉角的解决方案,而只是寻找一种可以表示围绕世界轴的多次旋转的变换的方法。

1
'Raiden 2'紫色激光背后的数学是什么?
激光的路径受用户输入和屏幕上出现的敌人的影响。这是一个视频,在5:00分钟时显示有问题的激光:Raiden II(PS)-1个循环清除-第2部分 更新 这是使用Inkscape进行的测试,飞船在底部,等离子攻击了前4个敌人。似乎有一种模式。我先移动了船,然后将船把从其移开,形成了45°角,然后在尝试拟合曲线时,我发现了平行船把的图案,并一直沿用直至到达最后一个敌人为止。 更新,2012年5月26日:我使用贝塞尔曲线启动了XNA项目,仍然需要进行一些工作,下周将更新问题。敬请关注 ! 更新:5/30/2012:确实似乎他们使用的是贝塞尔曲线,我想我将能够复制/模仿这种等级的等离子体。自上次以来,我发现了两个新主题:弧长,龙格现象,第一个应该帮助在Bézier曲线上进行线性运动,第二个应该帮助优化顶点数量。下次我会放一个视频,以便您看到进度8-)

2
人们为什么使用四元数?
我已经将它们用作黑匣子已有一段时间了,我只是在学习数学,但我想对此问题给出一些明确的答案。 到目前为止,我个人遇到的唯一好处是能够在两个角度之间进行SLERP-要用向量实现相同的效果,您需要进行一些麻烦的工作(本质上将0和2PI链接在一起)。

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.