任何人都可以指向我的2D游戏物理库,以便为2D平台/侧滚游戏编程引力,跳跃动作等吗?或者你能为马里奥,声波等侧卷轴推荐一些算法吗?
任何人都可以推荐一本关于c ++中蒙特卡罗算法的好书吗?优选地,应用于物理学,甚至更优选地,物理学的类型是量子力学.
谢谢!
我正在写一个小船模拟(一艘帆船在动力而不是帆船下).它有一个方向舵和一个龙骨,我的大部分物理都是为推力和阻力而工作.我已经模拟了横跨船的阻力高于沿船的阻力以减少侧向滑动.
然而,它表现得并不正确.我是否正确地说龙骨不仅会提供抵抗力,还会通过引水来帮助船只通过转弯?
最终的模型不一定具有科学的准确性,只需要像船一样"感觉".
任何指针都将非常感激.
最好的问候和提前感谢.
戴夫
编辑(最初由OP发布的答案)
好吧,意识到我错过了龙骨产生的水动力"升力".看起来它像水下航行一样,产生一个力矢量,与它上面的水流量和流量的角度成比例.力矢量与水穿过龙骨并朝向船指向的方向相反.理论上,这应该减少侧向滑动并且还将船拉过转弯.
如果有人知道这些东西,如果他们可以添加一个能够理解我的基本理解的答案,那将非常感激.我试图将其提炼成一个与船指向的方向以及船的行进方向和速度有关的公式.
好吧,意识到我错过了龙骨产生的水动力"升力".看起来它像水下航行一样,产生一个力矢量,与它上面的水流量和流量的角度成比例.力矢量与水穿过龙骨并朝向船指向的方向相反.理论上,这应该减少侧向滑动并且还将船拉过转弯.
如果有人知道这些东西,如果他们可以添加一个能够理解我的基本理解的答案,那将非常感激.我试图将其提炼成一个与船指向的方向以及船的行进方向和速度有关的公式.
好吧,我知道这对于程序员来说是非常偏离主题但我仍然需要这个应用程序,所以这里是:
弹道曲线(无风或任何其他条件)由以下两条线指定:


因此,存在一个问题,即您有3个未知值:x,y和时间t,但只有2个方程式.你不能用这些值真正计算所有3,我得到:
因此,您必须决定指定哪一个.
现在你有2D坦克游戏,或类似的东西,你知道你有坦克和使用弹道,你必须用设置角度和力量射击对手.
我需要知道子弹何时撞到地面,它可以在飞行时或预先计算时播出.出现了我的问题.哪种方式使用?在每个步骤中预先计算或检查是否击中地面.
如果我想预先计算,我需要知道地形的高度,这在逻辑上必须是恒定的,因为我不知道在哪个x坐标.如果我知道X,那就意味着我的炮塔前面就是墙.因此,当我到达地面时,唯一可以获得结果的方法是检查击中地面的时间间隔.这也很好,因为地形没有顶部静态yay!但这不是太大的开销,可以变得更简单吗?你遇到过这样的问题/解决方案吗?
提前谢谢,顺便说一下,地形可以是扁平的,使用线条或NURBS,所以我请求一般的解决方案,而不是特定的,因为你拍摄的高度会影响.
我正在使用加速度计在屏幕上以X/Y移动某些东西.
如果手机在桌子上平放,这很容易.
我想出了一些东西,试图能够从任何给定的位置开始,并从那里开始工作.但它似乎并不自然地起作用.
我如何校准事物,以便从起点上获得方向上的差异?
cursorX -= accelerometerCalibrationY - getAccelerometerY();
cursorY += accelerometerCalibrationX - getAccelerometerX();
Run Code Online (Sandbox Code Playgroud)
这适用于桌子上的平板和一些起始位置.这些变量在开始时只是getAccelerometerXY.
我试图在代码中模拟动画效果(几乎任何语言都可以,因为它似乎是数学而不是语言).从本质上讲,它是质量弹簧系统的仿真.我一直在看WPF/Silverlight ElasticEase,这看起来非常接近我正在寻找的东西,但并不完全.
首先,这里就是我要找的-一个对象,旅游若干秒,创下了位置,并立即下降放缓至ocsillate一定的秒数在涂敷阻尼的相同点休息.所以为了想象这个,让我说我有一个600w/900h的画布,我有一个正方形,开始动画从900px到150px TranslateTransform.Y.它需要4秒内达到150像素高度(每秒187.5px),在该阶段它被immediated阻尼并且仅行进大约35px更0.4秒(每秒87.5px)至115px高度,然后向下篮板1秒至163px高度(48px和48px每秒),然后回升到146px(17px和17px每秒),依此类推,直到ocillations减慢到最后150px的休息位置.ocirlation时间是16秒.
我上面描述的例子是左上角的蓝色矩形:

这是我事先知道的 - 像素距离和从A点到B点所需的秒数,即ocirlation的秒数.像质量这样的东西似乎并不重要.
我已经尝试ElasticEase了,问题似乎是我无法让对象在没有缓和4秒的情况下旅行,然后在接下来的16秒内"反弹".该.Springiness也总是太多,即使我将其设置为像20一个非常高的数字.
ILSpy展示其功能如下:
protected override double EaseInCore(double normalizedTime)
{
double num = Math.Max(0.0, (double)this.Oscillations);
double num2 = Math.Max(0.0, this.Springiness);
double num3;
if (DoubleUtil.IsZero(num2))
{
num3 = normalizedTime;
}
else
{
num3 = (Math.Exp(num2 * normalizedTime) - 1.0) / (Math.Exp(num2) - 1.0);
}
return num3 * Math.Sin((6.2831853071795862 * num + 1.5707963267948966) * normalizedTime);
}
Run Code Online (Sandbox Code Playgroud)
我在DropBox的压缩文件夹中包含了2个视频和一个Excel文件.我想这个问题将更多的是正在进行的工作,因为人们会提出更多澄清问题.
(免责声明:当涉及到大部分内容时,我不知道我在谈论什么)
我需要从以下传感器构建惯性测量单元(IMU):
我必须整合这些数据,以得出传感器平台的姿态和所涉及的外力(例如,从线性加速度中减去倾斜).
然后,我必须使用这些信息来补充标准的GPS单元,以提供比仅由GPS提供的更一致的测量.
我确实理解这个问题的基本要求:
虽然目前有各种各样的图书馆可供我这样做(http://code.google.com/p/sf9domahrs/)我需要了解所涉及的机制,以便我能够向其他人解释这些技术在我实施解决方案之后.
我一直在寻找以下资源,但我不确定我应该去哪...我需要一些内容涉及传感器融合,过滤,IMU,集成.
我希望在这方面有经验的人可以提供任何建议.
非常感谢.
如何将倾角仪(俯仰,偏航和滚转)转换为系统中预期的重力[X,Y,Z]?
处于某个俯仰角,俯仰角和俯仰角的静止系统应该在某个位置拉到地面[X*g,Y*g,Z*g],假设这是出于模拟目的.我想创建一个输入是Pitch,Yaw和Roll的函数,输出是一个Vector3(X,Y,Z)下降时刻.
意味着一个物体静止,它向后向下会输出类似于[0,-1,0]加速度计和a的东西[pitch,yaw,roll]->[0,-1,0],其中[0,-1,0]减去了[0,-1,0]结果[0,0,0].或者如果我们以1g的速度向左拉,我们有一个加速度计显示[1,-1,0]新的值[1,0,0].
系统背面[俯仰,偏航,滚动] - > [0,-1,0]功能是我所追求的
Vector3 OriToXYZ(float pitch, float yaw, float roll){
Vector3 XYZ = Vector.Zero;
//Simulate what the XYZ should be on a object in this orientation
//oriented against gravity
...
return XYZ;
}
Run Code Online (Sandbox Code Playgroud)
是的我知道,因为下面的解释显示我无法检测系统是否颠倒或不基于滚动仅作为滚动给出(-90到90)但这是一个不同的问题).
这就是方向的布局方式.

有关使用此信息的原因,内容和方式的更多信息,请继续阅读.
计划是使用测斜仪作为陀螺仪的替代方案,通过模拟/计算方向上的重力预期值(俯仰,偏航,滚动)来将重力分量移除到加速度计数据.
由于加速度计(XYZ)是重力(XYZ)和运动(XYZ)两个组件的组合,我假设gravity(XYZ)-calc_g(XYZ) = 0,允许我执行accelerometer(XYZ)- calc_g(XYZ) =movement(XYZ)
说明为什么我认为这是可能的.当我绘制手机的数值并将手机侧向移动时略微摆动,看起来像正弦/余弦运动的线条是倾斜的,其他线条是XYZ加速度计:
加速度值乘以90,因为它的范围为(-2到2),因此它在图纸中的范围从-180到180,俯仰偏航和滚转范围如上面的指示所示.图像的中间是Y = 0,左边是X = 0(X …
我目前正在C#中开展一个项目,在那里我玩行星万有引力,我知道这是一个关于它的最重要的话题,但我喜欢挑战.我一直在阅读牛顿定律和Keplers定律,但有一点我无法弄清楚如何获得正确的引力方向.
在我的例子中,我只有2个身体.卫星和行星.这是为了简化它,所以我可以把握它 - 但我的计划是让多个物体相互动态相互作用,并希望最终得到一个有点逼真的多体系统.
当你有一个轨道时,那么卫星就有一个引力,那就是在行星的方向,但那个方向并不是一个常数.为了更好地解释我的问题,我将尝试使用一个例子:
假设我们有一颗卫星以50米/秒的速度移动,并以10米/秒/秒的速度朝着地球加速,半径为100米.(所有理论数字)如果我们然后说帧率是1,那么在一秒之后,对象将是50个单位向前和10个单位向下.
当卫星在一个框架中移动多个单位并且大约半径的50%时,重力方向在该框架内已经移动很多,但施加的力仅仅是"向下".这会产生很大的误差,特别是如果物体移动半径的很大一部分.
在我们的例子中,我们可能需要我们的重力方向基于我们当前位置和该帧结束时的位置之间的平均值.
怎么会计算这个呢?
我对三角学有基础知识,但主要关注三角形.假设我很愚蠢,因为与你们中的任何人相比,我可能都是.
(我之前提出了一个问题,但最后删除它,因为它产生了一些敌意,基本上没有那么好的措辞,并且一般都是一般的 - 这不是一个特定的问题.我希望这更好.如果没有,那么请告诉我,我在这里学习:))
仅供参考,这是我现在运行的功能:
foreach (ExtTerBody OtherObject in UniverseController.CurrentUniverse.ExterTerBodies.Where(x => x != this))
{
double massOther = OtherObject.Mass;
double R = Vector2Math.Distance(Position, OtherObject.Position);
double V = (massOther) / Math.Pow(R,2) * UniverseController.DeltaTime;
Vector2 NonNormTwo = (OtherObject.Position - Position).Normalized() * V;
Vector2 NonNormDir = Velocity + NonNormTwo;
Velocity = NonNormDir;
Position += Velocity * Time.DeltaTime;
}
Run Code Online (Sandbox Code Playgroud)
如果我说得很糟糕,请让我重新措辞部分 - 英语不是我的母语,当你不知道正确的技术术语时,特定的主题可能很难说.:)
我有一种预感,这是在keplers第二定律中涵盖的,但如果是,那么我不知道如何使用它,因为我不完全理解他的定律.
谢谢你的时间 - 这意味着很多!
(如果有人看到我的功能出现多重错误,那么请指出它们!)
我一直在使用Lindblad方程对开放量子系统建模工作很长时间.汉密尔顿主义者如下:
然而,另外两个矩阵被添加到哈密顿量.其中一个的所有对角线项都等于-33.3333i,其他一切都为零.另一个是矩阵,第三个对角线项等于-0.033333i.
Lindblad方程是这样的:
其中L_i是矩阵(在列表中:[L1,L2,L3,L4,L5,L6,L7]).L_i的矩阵只是一个7x7矩阵,除了L_(ii)= 1之外全零.H是总哈密顿量,
是密度矩阵,和
是一个等于的常数
其中T是温度,k是玻尔兹曼常数,和
,其中h是普朗克常数.(请注意,gamma是自然单位)
以下代码解决了Lindblad方程,因此计算密度矩阵.然后计算并绘制这个与时间的关系:
这被称为站点3人口.
被称为胸罩和
被称为ket.两者都是载体.在这种情况下,请参阅代码以了解其定义.
这是代码:
from qutip import Qobj, Options, mesolve
import numpy as np
import scipy
from math import *
import matplotlib.pyplot as plt
hamiltonian = np.array([
[215, -104.1, 5.1, -4.3, 4.7, -15.1, -7.8],
[-104.1, 220.0, 32.6, 7.1, 5.4, 8.3, 0.8],
[5.1, 32.6, 0.0, -46.8, 1.0, -8.1, 5.1],
[-4.3, 7.1, -46.8, 125.0, -70.7, -14.7, -61.5],
[4.7, 5.4, 1.0, -70.7, 450.0, 89.7, -2.5],
[-15.1, 8.3, …Run Code Online (Sandbox Code Playgroud) physics ×10
c++ ×3
c# ×2
android ×1
animation ×1
game-physics ×1
gyroscope ×1
matrix ×1
montecarlo ×1
python ×1
qutip ×1
scipy ×1
sensor ×1
silverlight ×1
trigonometry ×1
vector ×1
wpf ×1