Articles of math

在3D空间中围绕vector旋转vector

我试图围绕一颗行星旋转月球(这个行星也围绕一个轴旋转),但是我却遇到了麻烦。 我试图让模型像这样在空间中移动: @Override public void render() { moon.getInstance().transform.setToTranslation(moon.center.x + 0.5f, moon.center.y + 0.5f, moon.center.z); } 我知道这不会给我正确的(或者甚至是任何的)轮换,但是模型甚至没有移动。 当我使用moon.getInstance().transform.setToRotation(1f, 0, 0, 10f)它旋转(围绕它的轴),所以我认为我可以使用.setToTranslation同样的方式。 所以,我的问题实际上是两个问题: 如何在三维空间中移动模型 我怎么能让它沿着一个圆形path绕着某个vector移动

将3D旋转vector转换成3D前向标题vector

我需要做一个接受Vector3D StartPos和Vector3D EndPos的raycast。 我可以使用3Dvector中的角色位置和相机旋转。 我需要以某种方式计算相机旋转的“前进方向”,并将其应用于玩家的位置,并乘以一些大数目来获得我的EndPosvector,但是我无法弄清楚它背后的math问题,我知道我可以使用sin ()和cos(),这是我想要采取的方法。 irr::core::vector3df CamRotation = GetOwner()->GetRotation(); irr::core::vector3df StartPos(GetOwner()->GetPosition().x(), GetOwner()->GetPosition().y(), GetOwner()->GetPosition().z()); irr::core::vector3df EndPos(0, 0, 0); 我已经尝试过使用sin()和cos()以不同的组合方式将负面信号投入到地方,但坦率地说,我不知道如何正确使用这些函数。

根据旋转find正常?

考虑到物体的XYZ旋转,例如(90,0,0) ,假如物体沿着它的局部Z轴指向,我怎么能find物体的法线? 在上面的例子中,所需的结果是(0,1,0) 。 我使用搅拌机,但这似乎更像是一个普通的math问题,所以我决定在这里问问。

枪Bobalgorithmmath解释

我偶然发现了这个我不完全理解的整洁的algorithm。 它模拟了跑步/行走时第一人称射击者通常见到的相机的晃动效果。 我主要不确定定时器和总计algorithm的翻译。 会有一些比我更多的math技能的人是否愿意在评论的基础上解释它? 如果是这样,非常感谢。 Vector3 localPosition = transform.localPosition; if (Mathf.Abs(horizontal) == 0 && Mathf.Abs(vertical) == 0) { timer = 0.0f; } else { waveSlice = Mathf.Sin(timer); timer = timer + bobSpeed; if (timer > Mathf.PI * 2) { timer = timer – (Mathf.PI * 2); } } if (waveSlice != 0) { float translateChange […]

在3D空间中获取六角形瓦片的邻居

我有一个hex瓷砖模型,如下所示。 每个六角形图块都是独立的对象,这意味着我可以在Unity中单独访问每个六角形图块 现在在我的程序中,我想能够获得所选瓦片的6个相邻瓦片。 起初我以为我会得到当前图块的6个边,然后检查是否有任何剩余的图块具有共同的边,但如果要计算所有图块的邻居,这将非常昂贵。 有任何想法吗??

3D翻译相对于3D旋转

我正在尝试将相机移动编程为相对于相机旋转。 (无论俯仰,偏航,滚动,前进总是向前),我希望能够向前,向后,向左,向右,向上和向下移动。 我不想使用matrix。 我想用标准的math库中的sin和cos。 相机在所有3轴上旋转。 旋转顺序是z(roll),y(pitch),x(yaw)。 当所有旋转为0时,正z是向前,正y是向下,正x是左。 到目前为止,我已经得到了前进和后退的工作, velZ = speed * cos(rotX) * cos(rotY); velY = speed * sin(rotY); velX = speed * sin(-rotX) * cos(rotY); 如果有人知道如何做到这一点,或知道在哪里可以find这方面的信息,将不胜感激。

移动矩形内的对象的百分比

这个想法是我想要得到Rect2相对于Rect1的位置的百分比。 在图中,这将是大约75/80%。 Rect2从不离开Rect1。 我一直在移动Rect1,所以它应该工作,不管Rect1的位置。 我有这样的事情,但它没有按预期工作:((Rect2.X + Rect1.X)/(Rect1.Width + Rect1.X))* 100 Rect1.X将作为偏移量工作,所以计算将“忽略”Rect1的移动。 或者那是这个想法…

重力:在地面进近时减速

我正在寻找一些math,没有任何语言依赖。 2D游戏中角色的“标准”重力会像这样: if player.y > ground.y { player.velocity.y = player.velocity.y – gravity } 在我正在执行的小游戏中,我实际上喜欢重力减弱,速度减慢,因为玩家靠近地面。 IE:当角色离地面100米时,他应该比地上1米时快。 他应该以某种方式像羽毛一样降落。

使用正弦和余弦围绕轴旋转3dvector

我试图用2个variables表示一个3d锥形光的方向。 现在我用两个点(6个variables)来表示它,但是我知道三维空间中的方向可以用两个角度来表示,即将一个任意的vector(例如,指向上)围绕两个固定的轴一步一步地旋转。 这些计算将在着色器中完成,所以我需要一个类似于这个问题的公式,这将允许我执行这样的旋转。 任何人都可以建议吗? 更新: 根据Babis的回答,我做了一个简单的控制台项目,计算两个3d点的phi和theta,然后使用角度重新计算归一化的方向向量。 然而,algorithm似乎总是给我错误的dir.Y值由于某种原因: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.Xna.Framework; namespace DirectionIn2Angles { class Program { static void Main(string[] args) { Vector3 first = new Vector3(1000, 1200, 85.245f); Vector3 second = new Vector3(1150, 85, 750); Vector3 distance = second – first; float length = distance.LengthSquared(); distance.Normalize(); […]

一个旋转的球的轨迹

在旋转时如何预先计算踢球的轨迹? 我正在应用纺纱使用简化的马格努斯效应每帧像这样,它的工作原理: acceleration += swerve × velocity 我的问题是:下面的计算物体轨迹的方程可以扩展到包括球旋转吗? position = start + 0.5*acceleration*time^2 + velocity*time; 我正在使用欧拉整合和球移动罚款。 我只想知道如何预测球的运动path。