我目前正在设计一个涉及一些物理学的程序(没什么太奇特,几个球相互碰撞)
在c#中,我可以使用哪种最精确的数据类型来表示位置(没有离散跳跃的感觉)?
另外,在t和t + 1之间我可以得到的最小时间是多少?一蜱?
编辑:澄清:C#中最小的时间单位是多少?[TimeSpan].Tick?
我想在三维空间中模拟一些具有吸收和反射的传播波.我想用python做.我应该使用numpy吗?我应该使用一些特殊的库吗?
我该如何模拟波浪?我可以使用波动方程吗?但是,如果我有反思怎么办?有更好的方法吗?我应该用矢量吗?但是当光线发散时,强度会降低.难.
提前致谢.
我正试图操纵一个物体.当它接近另一个物体时,让我们说一个地球仪,我希望地球对原始物体有一个引力.我知道我应该使用CCBezierTo,所以这不是一个编程问题,因为它是一个数学问题.
在数学上,我怎么能找出贝塞尔曲线的三个点(1,2和结束)并根据它的距离赋予它一个权重(更远的距离=更少的拉力).我已经在变量中绘制了距离.
想象一下在月球周围弹射的宇宙飞船.
码:
ccBezierConfig bezier;
bezier.controlPoint_1 = ccp(projectile.position.x + 10, projectile.position.y + 20);
bezier.controlPoint_2 = ccp(projectile.position.x + 20, projectile.position.y + 40);
bezier.endPosition = ccp(projectile.position.x + 30, projectile.position.y+60);
id bezierAction = [CCBezierTo actionWithDuration:1 bezier:bezier];
[projectile stopAllActions];
[projectile runAction: bezierAction];
Run Code Online (Sandbox Code Playgroud) 
我正在为游戏制作一个简单的堆栈,玩家可以移动编号的棋子,以跟踪他们与完成收集胜利手段的距离.
目前我使用jQuery UI的可拖动和可拖放.它很适合轻松启动,但一次只能移动一件:http://cssdeck.com/labs/cowmmudd/4.
canvas但是我想要像谷歌那样实现相同的目标:http://mrdoob.com/projects/chromeexperiments/google-gravity/)有人可以使用他们所知道的最好的JavaScript物理库提供控制普通,非画布HTML元素的放置和碰撞的简约示例吗?
我想在两个SKPhysicsBodies之间创建简单的关节.但是,他们表现得非常奇怪.我很清楚锚点应该在场景坐标上.请查看附带的源代码.
例如,这是在矩形上附加小方块后如何生成固定关节.
-(void)createFixedJointOnScene:(SKScene*)scene
Run Code Online (Sandbox Code Playgroud)
{
//Adding Rectangle
SKSpriteNode* backBone = [[SKSpriteNode alloc] initWithColor:[UIColor whiteColor] size:CGSizeMake(20, 200)];
backBone.position = CGPointMake(CGRectGetWidth(self.frame)/2.0, CGRectGetHeight(self.frame)/2.0);
backBone.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:backBone.size];
backBone.physicsBody.categoryBitMask = GFPhysicsCategoryRectangle;
backBone.physicsBody.collisionBitMask = GFPhysicsCategoryWorld;
[scene addChild:backBone];
//Adding Square
SKSpriteNode* head = [[SKSpriteNode alloc] initWithColor:[SKColor grayColor] size:CGSizeMake(40, 40)];
head.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:head.size];
head.position = CGPointMake(backBone.position.x, backBone.position.y-40);
head.physicsBody.categoryBitMask = GFPhysicsCategorySquare;
head.physicsBody.collisionBitMask = GFPhysicsCategoryWorld;
[scene addChild:head];
//Pinning Rectangle and Square
NSLog(@"Head position %@", NSStringFromCGPoint(head.position));
SKPhysicsJointFixed* pin =[SKPhysicsJointFixed jointWithBodyA:backBone.physicsBody bodyB:head.physicsBody anchor:head.position];
[self.physicsWorld addJoint:pin];
Run Code Online (Sandbox Code Playgroud)
}

https://dl.dropboxusercontent.com/u/62559842/PhysicsTest.zip
谢谢.
我正在使用子弹制作游泳池模拟器,需要准确模拟人类可能的镜头.为了找到应用于母球的冲动,我使用了物体球,口袋中心和母球的位置.
常见拍摄场景http://www.poolplayers.com/wp-content/uploads/2013/03/372-TangentLine-2.jpg
在母球的运动路径类似于物体球(180度附近的击打角度)的情况下,一切正常并且物体球落入口袋中.但似乎镜头路径的角度越大,我产生的脉冲的误差范围就越大.我已经尝试了很多东西来解决这个问题:调整球的碰撞余量,扩大世界范围,关闭摩擦力和恢复原状以及许多其他因素似乎没有改变这种行为.
以下是我的代码的相关部分:
//assume p = pocket center, b = object ball center, c = cue ball center
//first find the position of the ghost ball, ie the target point of collision for the cue ball
btVector3 ghostPos = b+(b-p).normalize()*(2.0f*BALL_RADIUS);
//then use the normal between the ghostball and cue ball as the impulse, scaled by the shots total distance
btVector3 cueImpulse = (ghostPos-c).normalize()*((p.distance(b)+ghostPos.distance(c))*HIT_RATIO);
//finally apply the impulse to the cueball's center of mass (using general form of applyImpulse to …Run Code Online (Sandbox Code Playgroud) 1)有没有证据表明混合刚体phisix和流体(比如SPH)的模拟可以为现实世界提供建模?
2)这种混合的框架如何工作?
假设我们在一个箱子里面有一个woden秋千,里面有两种不同的液体(油和水)和一个柔软的身体球.开始条件如下:

我们怎么能模拟这种情况呢?用什么工具?
我现在如何看待它(如果我错了请高高在上)
*)*在RB\SB phisix引擎中加载()并制作框架.*在流体发动机的tate()中表示我们的rb/sb,作为来自力场的脉冲的粒子*)使用RB和SB作为粒子,其密度对应于它们制作的材料,并且脉冲对应于先前计算的矢量场**)这至少在理论上可以近乎实时地用gpu上的当前流体3 +子弹3来计算......对于简单的情况......但是我想知道这使得系统不真实多少?
这是我在尝试使用LÖVE引擎实现游戏时遇到的问题,该引擎覆盖了带有Lua脚本的box2d.
目标很简单:类似炮塔的物体(从顶部看,在2D环境中)需要定位自己,使其指向目标.
炮塔位于x,y坐标上,目标位于tx,ty.我们可以认为x,y是固定的,但是tx,ty往往会从一个瞬间变化到另一个瞬间(即它们将是鼠标光标).
转台有一个转子,可以在任何给定的时刻,顺时针或逆时针施加旋转力(扭矩).该力的大小有一个名为maxTorque的上限.
转台还具有一定的转动惯量,其作用于角运动,与质量作用于线性运动的方式相同.没有任何摩擦,因此如果它具有角速度,炮塔将继续旋转.
炮塔具有较小的AI功能,可重新评估其方向以验证其指向正确的方向,并激活旋转器.这发生在每dt(每秒约60次).它现在看起来像这样:
function Turret:update(dt)
local x,y = self:getPositon()
local tx,ty = self:getTarget()
local maxTorque = self:getMaxTorque() -- max force of the turret rotor
local inertia = self:getInertia() -- the rotational inertia
local w = self:getAngularVelocity() -- current angular velocity of the turret
local angle = self:getAngle() -- the angle the turret is facing currently
-- the angle of the like that links the turret center with the target
local targetAngle …Run Code Online (Sandbox Code Playgroud) 我用Java实现了一个游泳池台球游戏,一切正常.这是一个多人游戏,但是,它也应该可以单独玩.为此,我试图实现一个简单的KI.此刻,KI只是随意选择一个方向和一个随机强度的脉冲(不知道正确的英语单词).当然,这个AI非常差,不太可能挑战玩家.
所以我想改善KI,但有几个难以解决的问题.首先,我想到只选择最近的球并尝试将其直接放入最近的洞中.这并不是那么糟糕,但如果在其他球之间有其他球,它就不再有效了.另外,这不能解决计算脉冲强度的问题.
那么有什么一般建议吗?还是有什么想法?最佳做法?
这个问题有一个主要问题,还有一个小问题.我相信我在研究中的任何一个问题都是正确的,但不是两者都有.
对于我的物理循环,我做的第一件事就是对我TotalForce的刚体物体施加一个引力.然后我用我TotalForce和我检查碰撞Velocity.我TotalForce会(0, 0, 0)在每次物理循环后重置,虽然我会保留我的velocity.
我熟悉在仅使用速度时在移动球体和静态平面之间进行碰撞检查.但是,如果我还有其他力量velocity,比如重力怎么办?我把其他力量放进去TotalForces(现在我只有引力).为了弥补这一点,当我确定球体当前没有与飞机重叠时,我这样做了
Vector3 forces = (sphereTotalForces + sphereVelocity);
Vector3 forcesDT = forces * fElapsedTime;
float denom = Vec3Dot(&plane->GetNormal(), &forces);
Run Code Online (Sandbox Code Playgroud)
然而,这可能是我认为假设是静止接触的问题.我认为休息接触是通过计算的
denom * dist == 0.0f
Run Code Online (Sandbox Code Playgroud)
哪里dist是
float dist = Vec3Dot(&plane->GetNormal(), &spherePosition) - plane->d;
Run Code Online (Sandbox Code Playgroud)
(作为参考,denom * dist > 0.0f球体远离飞机的明显意义)
但是,这永远不会成真.即使看起来有"休息接触".这是由于我forces上面的计算总是至少有-9.8(我的重力).y.当朝向法线为(denom0,1,0 )的平面移动时,将产生-9.8的ay .
我的问题是
1)我是否正确计算了我的前两个代码片段中提到的休息联系方式?
如果是这样,
2)我的"其他力量"如引力如何使用?我使用TotalForces不正确吗?
作为参考,我的时间步长是
mAcceleration = mTotalForces / mMass; …Run Code Online (Sandbox Code Playgroud) physics ×10
algorithm ×3
billiards ×2
c++ ×2
game-physics ×2
math ×2
objective-c ×2
bezier ×1
box2d ×1
c# ×1
gravity ×1
html5 ×1
ios7 ×1
javascript ×1
lua ×1
modeling ×1
numpy ×1
python ×1
simulation ×1
sprite-kit ×1
types ×1
wave ×1