Articles of math

计算只有XP正在更新时的当前级别和级别要求

我正在尝试创建一个基于他的XP计算玩家等级的公式。 游戏目前只有在某些行动后才会增加他的XP。 我有计算需要XP升级的公式: var baseXP = 500; var exponent = 1.04; var requiredXP = Math.floor(baseXP + (baseXP * Math.pow(user.level – 1, exponent))); 这个公式的目的是增加所需的水平,如下所示: Level 1: 0-499xp Level 2: 500-1527 Level 3: 1528-2066 Level 4: 2067-2613 Level 5: 2614-4165 etc… 我不确定公式是否正是我需要使用的,指数值只是任意的(递增/递减使平均花费更多/更less的时间) 如何使用或反转这个公式来计算玩家的当前水平。 作为一个加,任何方式来限制最高水平为100。 谢谢

在两点之间缩放精灵

我需要在scale1位置40( yPos1 )以一个比例.6( scale1 )开始一个精灵。 知道结束y位置560( yPos2 )和结束比例1( scale2 ): 如何计算yPos1和yPos2之间不同y位置的yPos2 ?

列与行向量matrix乘法(向量变换)

假设我们有一个4×4的matrixA来代表一些变换。 我们可以使用这个matrix来以两种方式转换一个向量。 Ax假设x是一个4乘1的列向量。 xA通过假设x是1乘4行向量。 直到昨天,我还没有看到这个xA变体,我认为这是没有必要的。 然后我来了这个 。 这个函数只需要投影matrix,计算反投影matrix,然后这个xA变体(不是Ax )转换(或者不投影)一堆坐标。 起初,我没有看, Ax出来无意义,现在我想明白为什么。 我注意到Ax == xA T但是当我查看matrix乘法的方式时。 构成结果的组件是非常不同的,这取决于我是使用Ax还是xA (因为它应该是matrix乘法是不可交换的)。 Ax的分析解(3×3matrix和行向量) {x,y,z}.{{a,b,c},{d,e,f},{g,h,i}} == {ax+dy+gz,bx+ey+hz,cx+fy+iz} xA (3×3matrix和列向量)的parsing解 {{a,b,c},{d,e,f},{g,h,i}}.{{x},{y},{z}} == {{ax+by+cz},{dx+ey+fz},{gx+hy+iz}} 我使用Mathematica来testing这些东西。 在预感上,我尝试了xA的分析解决scheme,手动调换xA的元素,当然,我得到了。 {{a,d,g},{b,e,h},{c,f,i}}.{{x},{y},{z}} == {{ax+dy+gz},{bx+ey+hz},{cx+fy+iz}} 除了我们现在有一个列向量不是一个行向量,这相当于Ax 。 我假设所有这一切都是纯粹的传统(并取决于我是否假设行或列主matrix布局)。 看起来我可能已经回答了我自己的问题,但如果我在这里有任何问题,请纠正我。

确定哪个点沿着方向vector更远

我试图写一个平截头体剔除algorithm,只需通过testing轴alignment的一个平面框,而研究这个我碰到了一篇文章在这里: input链接描述这里我遇到的麻烦是确定哪些点是最平面的法线如下所示: 对于每个箱子,我需要确定哪个角落或箱子沿着平面的法线方向最远。 在网站上的伪代码对我来说没有意义,因为我的盒子类的结构不同,任何帮助将不胜感激。

date时间math(有点细节缺失)

好吧,所以我有这个方法,我试图从另一个减去一个date,然后用一个整数除以它: public void BonoDatos () { //public InputField StartTimeBono; //public InputField FinishBono; //DateTime BonoStart Datetime BonoFinish //public InputField NumeroDeBonos; //int NumDeBonos; NumDeBonos = int.Parse (NumeroDeBonos.text); BonoStart = DateTime.ParseExact (StartTimeBono.text, "MM/dd/yyyy HH:mm:ss", null); BonoFinish = DateTime.ParseExact (FinishBono.text, "MM/dd/yyyy HH:mm:ss", null); Start2 = DateTime.Now; BonoPeriodo = (int)((BonoFinish.Subtract(BonoStart).TotalSeconds) / NumDeBonos); print (BonoPeriodo); print ("funciona"); if (MaquinasGanadoras.text.Length > 0) […]

LibGDX中的setTransformMatrix和setProjectionMatrix有什么区别?

LibGDX中有两种SpriteBatch方法: setTransformMatrxi和setProjectionMatrix 。 我知道可以使用batch.setProjectionMatrix(camera.combined)来定义对象应该在屏幕上呈现的方式/位置。 但是,那么setTransformMatrix做什么的? 我GOOGLE了“变换matrix和投影matrix之间的差异”,但没有运气。

查找数组中的精灵之间的距离

我是新来的Java,并希望如果有人能帮助我。 所以我的游戏里有meteor在屏幕上产生,有时在他们产卵的时候,它们彼此重叠,我不想要。 我希望他们从彼此的一定距离产卵。 从伪代码我知道我想要什么是find精灵的中心点,在屏幕上find其他的meteor,计算距离,然后从一定距离产卵。 我知道距离点公式(distance = Math.sqrt(Math.pow(x2 – x1,2)+(Math.pow(y2 – y1,2)));),但我怎么做在一个数组。 这是我的代码到目前为止: meteor级 public class Meteors { private Texture bigMeteor; private Vector2 posBigMeteor; private Random yrand; //Constructor public Meteors(float x){ bigMeteor = new Texture("meteor.png"); yrand = new Random(); //Spawn location of meteor posBigMeteor = new Vector2(x, yrand.nextInt(AstroDemo.HEIGHT/2 – bigMeteor.getHeight())); } public Texture getBigMeteor() { return […]

使用视图matrix和投影matrix计算三维世界中一个点的屏幕点的问题

我正在计算3D世界位置的2D屏幕点。 为此,我使用乘法ViewMatrix * ProjectionMatrix 。 但我没有得到好的结果,我想我搞乱了我的计算或我的ViewMatrix本身是错误的(我认为后者)。 这是我的ViewMatrix在摄像机向下看的时候的样子(在我的脚下): 0.362, 0.932, 0.000, 0.000 -2.241, 0.094, -0.966, 0.000 -0.900, 0.350, 0.259, 0.000 8.100, -16.860, 4.598, 1.000 我使用4/3宽比为60 FOV手动计算我的左手视角ProjectionMatrix并使用0.1和1000作为我的近远Z.这是结束投影matrix: -0.117, 0.000, 0.000, 0.000 0.000, -0.156, 0.000, 0.000 0.000, 0.000, 1.000, 1.000 0.000, 0.000, -0.100, 0.000 我将前两个matrix乘以ViewMatrix * ProjectionMatrix并将其用作ViewProjectionMatrix 。 现在我需要计算三维点的剪切空间坐标。 我这样做如下: XMFLOAT4 clipCoords; clipCoords.x = pos.x * viewMatrix._11 + […]

将极坐标映射到立方体

我正在尝试将极坐标映射到多维数据集上的点。 我能够映射立方体的正面,背面,左侧和右侧面,但是我正在顶部和底部挣扎。 这是我有什么: /// <summary> /// Converts polar coordinates to uv coordinates on a cube. /// </summary> /// <param name="p">The polar coordinate; px = longitude, py = latitude.</param> /// <param name="face">The face of the cube that p maps to.</param> /// <returns>The xy coordinate on the cube face.</returns> private Vector2 PolarToCubeFace(Vector2 p, out CubemapFace face) { […]

以一个恒定的速度移动一个非常接近相机的物体,可以让视觉加速

我在3D空间(真实世界意义上的广告牌)上有一个四边形,我想要靠近相机,以便用户检查它。 四边形由其四角的三维坐标定义。 为了达到这个目的,我计算出每个角落都非常靠近相机的目标点。 (我使用XNA的Viewport.Unproject()方法做类似的事情) // Top left corner of the screen, // Z=0.1f means very close to the camera's near plane var screenPoint = new Vector4(0,0,0.1f,1); var worldPoint = Vector4.Transform(screenPoint, Matrix.Inverse(ViewMatrix * ProjectionMatrix)); var worldPoint /= worldPoint.W; 这些靠近相机的世界点产生一个非常小的四分之一:这是可以理解的,如果我们看这张图片: 这里,四边形的初始位置用红色表示,四边形的结束位置用蓝色表示。 对于四边形的每个角,我在原始位置和靠近相机的位置之间进行线性插值。 this.timer += deltaTime; var progress = this.timer / 10.0f; var currentTopLeft = Vector3.Lerp(initialTopLeft, nearTopLeft, progress); […]