Articles of 线性代数

基本的汽车运动,将2Dvector转换成3D问题

我试图按照这个家伙的方法转向一辆基本的汽车。 链接 。 这是第一个我可以把我的头,我试图将其转换为一个工作的3D版本的例子。 为了得到一些范围,我在OpenGL中渲染了一个代表一辆汽车的立方体,并且我正在使用GLM进行matrix操纵。 即使我正在试图获得一个3D例子工作,我只使用2D控件; 左/右的X轴和前/后的Z轴。 为了清楚起见,我已经将所有的vector显示为vec.x,vec.y,vec.z. 注意到vec.y没有太多的事情发生,因为现在汽车在XZ飞机上保持水平。 (如自上而下的游戏,但在3D环境中)。 我在屏幕上收到一些奇怪的反应,我不明白为什么。 我只能假设我误解了一些代码所属的地方。 这些是我的变数等: glm::vec3 carLocation(0,0,0); //location of car float carHeading = 0.0f; //direction car facing float carSpeed = 0.5f; //speed of car float steeringAngle = 0.0f; //angle of front wheel float wheelBase; //length of car glm::vec3 frontWheel; //vec 3 representing front wheel glm::vec3 backWheel; //vec […]

2Dmatrix转换形状的问题

我已经把自己的任务放在创建一个类BaseObject的任务上,该类代表一个带有关联形状的graphics对象作为成员variablesshape,它是一个指向对象Polygon的指针。 我将在这里提供他们的声明,以及我确信导致我的问题的function的相关实现。 我的问题? 就像二维matrix变换一样简单,它们似乎以我不喜欢的方式扭曲了我的形状。 我正在使用SDL2graphics库来解决这个问题。 这是BaseObject类的声明。 class BaseObject : public Entity { protected: Polygon shape; // Pointer to a shape static uint baseObjectCount; // Useless variable? Vector2 posVec; //Position vector public: // Positioning and geometry Vector2 positionRelativeTo(const BaseObject &other) const; double distanceTo(const BaseObject &other) const; // Get, set, ready!!!! Vector2 getPos() const; void setPos(Vector2 newPosVector); […]

如何找出基于2个点的向量,总和达到某个值

我正在写一个游戏,在这个游戏中我用一个向量表示一个速度。 我有一个起点和一个观点,我希望对象以一定的速度前进。 (我需要结果向量的x和y值加起来为800)。 我不知道我可以用什么样的公式来完成这个。 所以! 我有一个起点。 一个“终点”。 而且需要一个x和y值相加为800的vector。 这是我想出的代码: dx = size.width / 2 – ball.position.x dy = 800 – size.height / 2 – ball.position.y ball.physicsBody?.velocity = CGVectorMake(dx, dy) 虽然这似乎工作,| dx | + | dy | != 800,因此球以稍微不同的速度移动。 我确信我做错了,但我不知道如何去解决它。

CGVector让SKNode以一定的速度向屏幕中间移动?

我试图每次启动时都以相同的速度向屏幕中间发射我的精灵。 let vel: CGFloat = 1000 dx = size.width / 2 – ball.position.x dy = vel – size.height / 2 – ball.position.y ball.physicsBody?.velocity = CGVectorMake(dx, dy) 这样做的作用在于,球向屏幕的中心发射,但是以不同的速度发射,取决于球的起点。

find另外两行的一条线的角度

我试图实现一些2D车辆物理。 为了这个工作,我有2个车轮附在车身上。 在做一些碰撞检查之后,我把车轮放在新的位置。 假设第一个轮子在(-0.5,1),第二个轮子在(0.5,1),我现在必须计算轮子之间的身体角度和位置。 在给定的例子中,角度应该是0.但是,我该如何计算角度? 因为图片使一切变得更容易:蓝色的线条是轮子的位置,粉红色的线条是身体。 鉴于车轮的两个位置,身体相对于地面的角度是多less?

在运动的时候拖到中心点

我有一个初始飞行的敌人,同时背离中心点。 这是我如何实现的: position.Y = (float)(Math.Cos(timeAlive * MathHelper.PiOver4) * radius + origin.Y); position.X = (float)(Math.Sin(timeAlive * MathHelper.PiOver4) * radius + origin.X); if (timeAlive < 5) { angle = (float)Math.Atan((0 – position.X) / (0 – position.Y)); if (0 < position.Y) RotationMatrix = Matrix.CreateRotationX(MathHelper.PiOver2) * Matrix.CreateRotationZ(-1 * angle); else RotationMatrix = Matrix.CreateRotationX(MathHelper.PiOver2) * Matrix.CreateRotationZ(MathHelper.Pi – angle); } 那部分工作得很好。 […]

如何实现一个简单的子弹轨迹

我search和search,虽然这是一个公平的简单的问题,我没有find正确的答案,但一般的想法(我已经有了)。 我有一个自上而下的游戏,我想实现一个枪,射击子弹遵循一个简单的path(没有物理或轨迹的变化,只是从A到B的东西)。 a:枪/玩家位置的vector。 b:鼠标位置的vector(十字线)。 w:子弹轨迹的vector。 所以,w = ba。 并且子弹的位置= [x = x0 +速度时间归一化wx,y = y0 +速度*时间*归一化wy]。 我有构造函数: public Shot(int shipX, int shipY, int mouseX, int mouseY) { //I get mouse with Gdx.input.getX()/getY() … this.shotTime = TimeUtils.millis(); this.posX = shipX; this.posY = shipY; //I used aVector = aVector.nor() here before but for some reason didn't work […]

模型骨骼的转换matrix

我正在开发一个fbx转换器,用于传奇的grimrock对象模型( www.grimrock.net ),我只是想获得animation,其余的已经被别人的工具转换了。 我正在阅读他们的所有指导方针,将他们的小端二进制文件转换为我想要的格式(在本例中为fbx)当我要构建骨架时,由于这个原因 // A Mat4x3 is a transformation matrix split into 3×3 rotation and 3D rotation parts struct Mat4x3 { Vec3 baseX; Vec3 baseY; Vec3 baseZ; Vec3 translation; } (顺便说一下,Vec3是一个三维vector(xyz),你可以在这里find他们的对象模型的完整规格) “Mat4x3是分成3×3旋转和3D旋转部分的变换matrix”是什么意思? 关于创建骨骼,我认为matrix应该是一个转换matrix,而不是一个旋转matrix。 所以我有点困惑。 无论如何,我应该这样计算? (o =原产地) x' = x*x1 + y*y1 + z*z1 + o1; y' = x*x2 + y*y2 + z*z2 + […]

构建HTML5游戏书时,如何在开发游戏时计算碰撞

计算两个圆圈(气泡)之间的碰撞时,我不明白作者login。 这是计算碰撞部分。 作者写道: 被击发的气泡遵循由等式定义的一组坐标: px = ex + tdx py = ey + tdy 其中px和py是气泡中心点轨迹上的点。 px和py的计算发生在jQuery的animation方法中,并且是沿线移动点的标准方程。 接下来,我们将在这条线的最近点处计算t到我们正在检查的泡泡的中心: var t = dx * distToBubble.x + dy * distToBubble.y; 我不明白这是什么,为什么它按以下公式计算: var t = dx * distToBubble.x + dy * distToBubble.y; ?

两行之间的距离(课本答案与实际应用)

我正在阅读“3D游戏编程的math和计算机graphics学”作为一个复习,并导致一些更复杂的现实世界的问题。 然而,前面的章节有一些似乎过于复杂的math。 这个问题涉及教科书中的一个问题,我相信解决办法比推荐的要简单得多。 问题是要find两条线(2维或3维)之间的距离。 有些设置: 1)线条参数设置,而不是两点。 1号线: 2号线: 其中P = S + tV – S是起点(比如A),等于(1-t)* A 现在这本书说明使用这个解决scheme: 扩展看起来像: 那么下一步的书就是要减less这个,并且把时间的衍生物作为两者的时间 和 一旦衍生物被计算出来。 我们移动到matrixforms,并使用一些线性代数来求解。 我的问题是,当我已经知道使用参数的两点的[x,y,z]时,为什么要使用这一系列的步骤。 用这些价值观并不是简单的解决scheme就是做: 然后: 最后: 是否有一些直接应用我所缺less的前一个方程式(本书目前没有详细阐述其应用)? 我已经和其他游戏开发者进行了一些讨论,我们还没有发现很多线性代数的用例。 编辑:(线性代数解) 首先是关于时间的衍生物: 然后以matrixforms求解两个variables: