所以我决定尝试通过编写一些python脚本来解决我的物理作业来为我解决问题.我遇到的一个问题是,重要的数字似乎并不总能正常出现.例如,它可以正确处理重要数字:
from decimal import Decimal
>>> Decimal('1.0') + Decimal('2.0')
Decimal("3.0")
Run Code Online (Sandbox Code Playgroud)
但这不是:
>>> Decimal('1.00') / Decimal('3.00')
Decimal("0.3333333333333333333333333333")
Run Code Online (Sandbox Code Playgroud)
所以有两个问题:
我想编程一个简单的波传播可视化.我尝试使用visual python(VPython),但程序非常慢.我现在想要使用二维可视化.你能推荐哪个模块?Tkinter的?Matplotlib?
对于计算我使用numpy/scipy因为它很快.提前致谢.
编辑:你认为matplotlib是一个不错的选择吗?它看起来非常强大.
编辑:我真的卡住了.请帮我!
快速概述:我正在尝试使用Box2D作为基础进行游戏.现在我的问题:
我应该如何设置台球和边缘以使它们正常运作?球有时似乎没有明显的原因粘在边缘上.我有四个静态墙体对象,在桌子边缘有一个恢复原状.
每个球具有以下属性:
friction: 0.3
restitution: 0.3
density: 58.474822 (kg/m^2)
radius: 0.028575 (m)
Run Code Online (Sandbox Code Playgroud)
母球的密度为101.356358(kg /平方公尺)
当施加一个1.2千米/秒的提示脉冲时,球似乎以正常的水池球速度移动,并且大部分正确地从墙壁上反弹.然而,有时当球击中墙壁时它根本不会反弹,它只会停止,或者只是继续沿着墙壁行进.这看起来很奇怪,似乎不正确.有没有更好的方法来设置它?
假设我们有导弹A,具有位置矢量和速度幅度(忽略加速度,就像许多游戏一样)和太空飞船B,具有位置和速度矢量.现在,这种导弹是一个讨厌的寻找导弹,将试图寻找太空船B的最佳拦截.
导弹A有两个优点:它知道微积分,它可以计算多项式的根.然而,导弹,或抽象的,程序员,仍在学习微积分,并想知道他是否有正确的方程式.(多项式根将由一个名为Jenkins-Traub Code的Netclib实现的好人解决)
以机智:
mp =导弹位置
mv =导弹速度
sp =宇宙飞船的位置
sv =宇宙飞船速度
t =时间
根据程序员的最佳猜测,拦截方程为:t sp sv + t sp mv - t mp sv - t mp mv
除了我很确定我完全走错了轨道,因为在这个混乱中应该有一些指数; 这是一个尝试解决:(sp-mp)(sv-mv)(t)
我的另一个选择是区分(sp-mp)(sv-mv)^ 2,但我想首先得到反馈,部分是因为,除非我弄错了,'(sp-mp)'解析为'1'.这似乎......奇怪.OTOH,这个功能正在改变的速度可能就是我正在寻找的.
那么 - 我有什么问题,在哪里以及为什么?
谢谢.
编辑:
方程式求和:
(a + bx)+(c + ex)
(a + 1bx ^ 0)+(c + 1ex ^ 0)
(a + 1)+(c + 1)
非可行的.
方程的乘积:
(A + BX)(C + EX)
AC + AEX + CBX + BEX ^ 2
不是多项式(不能用Jenkins-Traub解决)并且看起来不太正确.
AC + 1aex ^ …
我有一些简单的box2d机构设置与一个联系人监听器,如下所示:
#import "MyContactListener.h"
MyContactListener::MyContactListener() : _contacts() {
}
MyContactListener::~MyContactListener() {
}
void MyContactListener::BeginContact(b2Contact* contact) {
// We need to copy out the data because the b2Contact passed in
// is reused.
MyContact myContact = { contact->GetFixtureA(), contact->GetFixtureB() };
_contacts.push_back(myContact);
b2Body *A = contact->GetFixtureA()->GetBody();
b2Body *B = contact->GetFixtureA()->GetBody();
NSLog(@"Collision detected!");
PLAYSOUND(COLLISION);
}
void MyContactListener::EndContact(b2Contact* contact) {
MyContact myContact = { contact->GetFixtureA(), contact->GetFixtureB() };
std::vector<MyContact>::iterator pos;
pos = std::find(_contacts.begin(), _contacts.end(), myContact);
if (pos != _contacts.end()) {
_contacts.erase(pos);
}
}
void MyContactListener::PreSolve(b2Contact* contact, …Run Code Online (Sandbox Code Playgroud) 好的,所以这个问题一直困扰着我最长的时间.任何人都可以告诉我或指向一个可以像GTA2那样控制汽车的算法吗?经过3天的研究,我可以想出所有这些算法,用于在车轮上使用枢轴和关节以及分离车轮等.这是实现像GTA2那样的简单汽车运动的唯一途径吗?
我希望能够在没有轮子的矩形上使用该算法,但仍然可以使汽车漂移.那可能吗?顺便说一句,我是2D游戏的Box2D.
我知道这更适合gamedev,但由于某些原因我无法发布问题.
我一直在学习关于phisics编程中的碰撞,我有一个很大的疑问.
在球体中思考,当一个球体同时与2个球体碰撞时,我认为使两个球体移动的力量大小必须除以2.但是当我编程它的时候,我总是看到一个球体的速度比第二个球体的速度快,导致我编程它的方式首先与另一个球体碰撞.让我们展示一个图像来清楚地绘制问题:
首先它检测红色球体.然后检测到碰撞,力的大小就像只有一个球体.然后它检测橙色球体,力量小于第一个.
知道我必须使用什么来编程这个,或者我是否有任何误解?
mod:
此外,如果你帮助我寻找能够很好地实现这一目标的机制,我会给你50多个.
我一直在寻找一段时间以获得结论,但我似乎无法找到任何解决方案.
我正在尝试使用THREE.JS和PHYSI.JS创建一个简单的场景来获得一个小平台动作.我有一个质量为0的扁平盒子作为我的工作,还有一个盒子网格作为我的角色.Physijs的网站似乎建议我将__dirtyPosition变量设置为true.这里的问题是:__dirtyPosition与物理混淆.当我将角色从水平边缘移开时,他并没有摔倒.事实上,当它发生碰撞时,它似乎会停在世界立方体的中间位置.
当我尝试更新位置而不应用时__dirtyPosition,立方体会被放回原位.它有点颤抖,好像它有一个小小的癫痫发作,就是这样.如果我可以同时使用物理和运动,那就太棒了,使用Physi进行碰撞就像是过度使用它.这是我现在的表现,显然是错误的方式:
level1.generateScene = function()
{
level1.camera = new THREE.PerspectiveCamera(75, this.cameraWidth / this.cameraHeight, 0.1, 1000);
level1.material = new AdapterEngine.createBasicMaterial({color: 0x00ff00}); //Threejs basic material
level1.ground = new AdapterEngine.createBoxMesh(5, 0.1, 5, level1.material, 0); //Physijs box mesh with a mass of 0
level1.playerMaterial = new AdapterEngine.createBasicMaterial({color:0x0000ff}, 0.6, 0.3); //Physijs basic material with a fruction of 0.6, and a restitution of 0.3
level1.player = new AdapterEngine.createBoxMesh(0.3, 0.3, 0.3, level1.playerMaterial, 0.1); //Physijs box mesh with a mass of …Run Code Online (Sandbox Code Playgroud) 我有一个移动平台,但当节点在平台上方时,它不会随平台水平移动
在本文中,解释了问题:移动平台地狱
http://www.learn-cocos2d.com/2013/08/physics-engine-platformer-terrible-idea/
在评论中有Box2D的解决方案:运动体
但是SpriteKit怎么样?
更新
我正在使用平台
let moveHPart1 = SKAction.moveByX(origW, y: 0, duration: moveDuration);
let moveHPart2 = SKAction.moveByX(-origW, y: 0, duration: moveDuration);
platform(SKAction.repeatActionForever(SKAction.sequence([moveHPart1, moveHPart2])));
Run Code Online (Sandbox Code Playgroud) 请看这个小提琴:https://jsfiddle.net/sfarbota/wd5aa1wv/2/
我试图让球以正确的角度在圆圈内反弹而不会失去速度.我想我有碰撞检测,但我面临两个问题:
这部分是基于这里给出的答案:https://stackoverflow.com/a/12053397/170309但我不得不从Java翻译,并且从他们看起来无关紧要的例子中跳过了几行.
这是代码:
JavaScript的:
function getBall(xVal, yVal, dxVal, dyVal, rVal, colorVal) {
var ball = {
x: xVal,
lastX: xVal,
y: yVal,
lastY: yVal,
dx: dxVal,
dy: dyVal,
r: rVal,
color: colorVal,
normX: 0,
normY: 0
};
return ball;
}
var canvas = document.getElementById("myCanvas");
var xLabel = document.getElementById("x");
var yLabel = document.getElementById("y");
var dxLabel = document.getElementById("dx");
var dyLabel = document.getElementById("dy");
var vLabel = document.getElementById("v");
var normXLabel = document.getElementById("normX");
var normYLabel …Run Code Online (Sandbox Code Playgroud)