Questions tagged «linear-algebra»

线性代数是关于向量空间和此类空间之间的线性映射的数学分支。该标签通常用于有关向量计算的问题。

3
如何根据另一个对象的偏移旋转对象?
我有一个围绕Y轴旋转的转塔的3D模型。该炮塔的加农炮明显偏离物体中心。我希望大炮而不是炮塔瞄准特定目标。但是,我只能旋转炮塔,因此我不知道为了达到目标而需要应用什么方程式。 下图说明了我的问题: 如果我的炮塔为“ LookAt()”目标,则来自加农炮的激光将完全错过所述目标。 如果这是完全自上而下的情况,并且加农炮与炮塔完全平行,那么我的逻辑告诉我,假目标应位于等于实际目标的位置,再加上与目标之间的偏移量相等的位置。炮塔和加农炮 但是,在我的实际情况下,我的摄像机倾斜60º,并且大炮有轻微的旋转。 下图说明了这种情况: 我不确定为什么,但是如果应用相同的偏移量,则它似乎仅在瞄准与转塔一定距离的同时起作用。 我的逻辑有缺陷吗?我在这里缺少基本的东西吗? 最终编辑:@JohnHamilton最新更新提供的解决方案以完美的精度解决了此问题。现在,我已经删除了用于说明错误实现的代码和图像。

3
除了正交和透视以外,是否还有3D投影?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 标题中几乎有这个问题。除了正投影和透视以外,是否还有可用于3D系统(例如OpenGL)的显着3D投影? 特别是在游戏设计中是否有特殊用途?

6
对于游戏程序员来说,什么是一本好的线性代数书?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,以便仅通过编辑此帖子来关注一个问题。 4年前关闭。 有人告诉我,我应该开始学习线性代数,以便创建具有良好物理特性的出色游戏。 我正在阅读《线性代数》一书,这对我来说完全陌生。作者从求解线性方程(两个方程,两个变量)开始,我记得在学校学习过线性方程,但几乎立刻他就跳入了其他似乎直接来自死灵书中的东西。 我可以读哪本书来学习一些好数学,但是要从基础开始? 非常感谢您的帮助。

3
如何找到与2D向量垂直的方向?
我正在做一个自上而下的游戏,玩家将向前移动到鼠标光标的位置。作为玩家运动代码的一部分,我需要确定一个与玩家当前面对的矢量垂直的矢量(以实现划界行为)。 如何计算给定2D向量的垂直向量?

6
3D图形编程的数学主题
已关闭。这个问题需要更加集中。它当前不接受答案。 4年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我了解3D图形编程需要以下数学主题。我已经在我的数学课程中开始其中一些学习。有人可以指出我的资源方向来解释它们如何应用吗?他们用来解决什么图形/游戏问题? 向量数学 矩阵数学 四元数 线性代数 据我所知,这些都是线性代数/矩阵主题。还需要其他主题吗?

3
如何反转转换矩阵的效果?
我最近一直在通过GLFW使用OpenGL和C ++进行游戏。 在游戏中,我有一个飞艇,上面装有炮塔。飞艇在世界空间坐标中移动,而炮塔“跟随”它。 炮塔在外观/目标方向上拥有自己的坐标空间。基本上,当炮塔指向方向时(0,0,1),其瞄准方向平行于飞艇的运动方向。 为了给炮塔提供世界空间目标,我有一个矩阵,用于获取世界空间坐标并将其转换为炮塔空间坐标。 随着炮塔开火,我希望它在世界空间中生成弹丸,那么有没有一种使用我的转换矩阵将炮塔空间坐标转换回世界空间的优雅方法? 提出问题的更一般的方法可能是:如果我有一个矩阵M,它的坐标从空间A到空间B。有没有办法使用一种简单的方法M来从获得的坐标B来A?

4
如何检测在线碰撞中的2D线?
我是一名Flash动作脚本游戏开发人员,他对数学有些落后,尽管我发现物理学既有趣又很酷。 作为参考,这是与我正在制作的游戏类似的游戏:纠结的Flash游戏 我已经使这个复杂的游戏几乎完全完成了逻辑。但是,当两条线相交时,我需要那些相交或“缠结”的线来显示不同的颜色。红色。 如果您可以提出一种检测线段碰撞的算法,那对您来说真的非常好。我基本上是一个喜欢“视觉上”而非“算术上”思考的人:) 编辑:我想添加一些图表,以使想法更清晰地传达 PS我正在尝试使功能 private function isIntersecting(A:Point, B:Point, C:Point, D:Point):Boolean 提前致谢。

3
偏向保守的随机游走
我有一个精灵,它具有Velocity和Position,它们存储为Vector2。在每个Update循环中,将速度加到该位置。 我想给精灵一个第三向量Target。可以在任何迭代中给出新的目标。我希望子画面本质上以随机行走模式移动,但是必须公开两个参数: 典型的随机游走同样有可能增加或减少到任何给定距离Target(加上切向运动的机会很小)。我必须能够偏向我的随机游走,以便尽管仍然是随机的,但子画面“决定”的方向应该更可能使其接近Target。 随机游走应该是“平稳的”-子画面不应迅速改变方向,因为对玩家而言,这看起来像是“忽悠”或“颤抖”。它应该以这种方式逐渐转向,随机移动,而平均时则逐渐靠近。 有什么好的简单方法呢?如果可能,给出答案作为Vector2 RandomWalk(Vector2 target)方法。 我已经有一个NextGaussian(mean, stdev)可用的方法,如果有帮助的话。

5
如何正确在相机后面投射点?
我正在制作3D游戏,在其中将感叹号放在关注点上方。 为了找出应该在2D屏幕中放置标记的位置,我手动将3D点投影到标记应放置的位置。 看起来像这样: 看起来还不错 当标记位于屏幕之外时,我只需剪切坐标即可使其适合屏幕。看起来像这样: 到目前为止,这个想法进展顺利。但是,当关注点在相机后面时,得到的X,Y坐标将反转(正/负),并且我将标记显示在屏幕的对角,如下所示: (投影然后夹紧的点是标记的尖端。不要介意标记的旋转) 这是有道理的,因为平截头体后面的坐标在X和Y中是反转的。所以我要做的是在它们位于摄影机后面时反转它们的坐标。但是,我仍然不知道将坐标反转时的确切条件是什么。 当前,这是我的投影代码的样子(在带有SharpDX的C#中): public override PointF ProjectPosition(float viewportWidth, float viewportHeight, float y) { var projectionMatrix = Matrix.PerspectiveFovRH(GetCalibratedFOV(Camera.FOV, viewportWidth, viewportHeight), viewportWidth / viewportHeight, Camera.Near, Camera.Far); var viewMatrix = Matrix.LookAtRH(new Vector3(Camera.PositionX, Camera.PositionY, Camera.PositionZ), new Vector3(Camera.LookAtX, Camera.LookAtY, Camera.LookAtZ), Vector3.UnitY); var worldMatrix = Matrix.RotationY(Rotation) * Matrix.Scaling(Scaling) * Matrix.Translation(PositionX, …

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

2
如何测试一个点是否位于两条平行线之间?
在我设计的游戏中,爆炸会从起点向鼠标方向发射。爆炸的宽度始终是相同的。 沿着屏幕底部(当前是什么)移动的方格应该受玩家控制的爆炸影响。 目前,我正在尝试寻找一种方法来发现这些正方形的角是否在爆炸的两条边界线之内。我认为最好的方法是围绕原点旋转正方形的角,好像爆炸完全处于水平状态,然后查看拐角的Y值是否小于或等于爆炸的宽度。表示它们位于受影响的区域内,但我无法解决

4
使用无干扰的碰撞避免(转向)时,运动对象发生碰撞
我无法避免未避免的碰撞,我认为这是一种罕见的情况。我将两个对象设置为彼此相对,但有一点偏移,因此其中一个对象稍微向上移动,而其中一个对象稍微向下移动。 在我未对齐的防撞转向算法中,我在两条直线最接近的物体的正线上和另一个物体的正线上找到了点。如果这些最接近的点在避免碰撞的距离内,并且它们之间的距离小于两个对象的边界球的两个半径,则对象应沿适当的方向转向。 问题在于,对于我而言,计算得出的直线上最接近的点实际上与实际的碰撞点相距甚远。这是因为随着对象的通过,每个对象的两条前向线彼此远离。问题在于,因此,没有进行转向,并且两个对象部分碰撞。 有人对我如何正确计算碰撞点有任何建议吗?也许通过某种方式考虑到两个对象的大小?
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.