这是使用biot-savart定律计算磁场的代码.我希望得到一些tipps来优化这段代码.遗憾的是我使用德语:(我再也不会这样做了.:)
tic
clear all; clc; clf
skalierungsfaktor = 10^-6; % vom m-Bereich zum mm-Bereich wg. T = Vs / m^2
I = 1; % in A
konstante = 10^-10; % mu0 / (4 pi) in Vs / (A mm) % Faktor 10^3 kleiner wg. mm statt m
matrix = 30;
B = zeros(200,200,200,5);
zaehler = 0; % für Zeitmessung
xmax = matrix;
ymax = matrix;
zmax = 1;
radius = 9; % Spulenradius in mm
genauigkeit = 5; % 1 …Run Code Online (Sandbox Code Playgroud) 我试图找出一种方法来确定身体在2D环境中与另一个身体相撞的相对速度.
例如,如果一个物体在(1,0)处移动而另一个物体在其后面行进,则在(2,0)处从后面与其碰撞时,撞击相对于第一物体的速度为(1,0).
我需要一种方法,它采用两种速度,一种速度属于身体,速度被测量,另一种速度用于撞击身体并返回相对速度.
这是一个模拟网球被抛出50米建筑物侧面的程序.程序应在每个时间步输出x,y和速度值.但是,我似乎得到了无限循环.
#include<stdio.h>
#include<math.h>
int main() {
//Intial values
float ax = 0; //acceleration in the horizontal direction
float ay = -9.8; //acceleration in the downward direction
float x = 0; //top of building at position 0
float y = 50; //building is height 50 m
float vx = 10*cos(30); //velocity in the horizontal direction = 10 m/s * cos(30);
float vy = 10*sin(30); //velocity in the vertical direction = 10 m/s * sin(30);
int time = 0; //time starts at …Run Code Online (Sandbox Code Playgroud) 作为一个学校项目,我采取了在matlab中制作愤怒的小鸟克隆.在研究了一点之后,我意识到也许我会更多,然后我可以咀嚼.
目前我正在研究它的物理学,虽然我理解游戏背后的机制(碰撞,惯性和诸如此类),但我不知道我将如何在游戏中实现它.我是编程的新手,但我喜欢它并且很快就抓住了它.
在愤怒的小鸟中,我们正在处理几个OBB之间的碰撞,我有一个检测碰撞的算法.我有一个功能,检查每个框的所有角落,并查看它是否在另一个框内.我意识到这不是最好的方法,但由于我无法想象分离轴定理,我选择不使用它.
当碰撞发生时,盒子正在穿透另一个盒子,当发生这种情况时,我会在其前一个点和当前点之间进行线性插值.我对一个实例中的所有碰撞点执行此操作(这是我解决多个碰撞的方法).使用插值我检测发生的第一次碰撞,并实现碰撞响应.
我现在的问题是,当有一个盒子放在另一个盒子的顶部时,这种方法不能很好地工作,因为在每种情况下,顶盒都会轻微地进入底部,然后我将它弹回.这导致我的整个事情停止,因为我回到过去,解决碰撞,然后在下一个例子中碰撞再次发生.
我的问题是,我如何解决多个盒子彼此叠加的问题.
我已经通过http://www.wildbunny.co.uk查看了有关物理学的所有文章并尝试了解他的方法,但是当我明白他做了什么时,我不知道他是怎么做到的.我也不知道任何动作脚本这么多他的代码对我来说都是胡言乱语.
我已经浏览了互联网上的其他几个指南,但似乎没有一个对我有意义.
这对我来说有什么帮助,如果有人能告诉我通常用什么方法来实现像愤怒的小鸟这样的游戏图形,特别是多重碰撞方法(我的足够好还是我需要像wildbunny在他的博客中谈论的投机性联系人,以及关于盒子问题的盒子.
这个项目难以进行两周吗?
我从未做过任何3D编程,并且正在进行3D飞机碰撞模拟.我打算用Java做,虽然我知道C++可能更受欢迎,但我没有经验,而且时间有限.
任何人都可以推荐任何引擎或包装?我知道有Java3D,但现在不是有点老了吗?我也见过JMonkey Engine,虽然这是游戏,我相信它对于模拟软件会没问题吗?
谢谢!
我正在使用加速度计来检测车祸.我有一个问题,需要最低阈值来检测车祸.检测车祸所需的最低阈值.
@Override
public void onSensorChanged(SensorEvent event) {
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
float gX = x / 9.8f;
float gY = y / 9.8f;
float gZ = z / 9.8f;
float gForce = FloatMath.sqrt(gX * gX + gY * gY + gZ * gZ);
if(gForce > //HERE IS NEED THRESHOLD VALUE)
}
Run Code Online (Sandbox Code Playgroud) 我的测试环境:
Xcode 4.6,新cocos2d-x + box2d项目cocos2d-2.1beta3-x-2.1.1 PhysicsEditor 1.0.10
我在PhysicsEditor cocos2dx演示的HelloWorldScene中修改了一下以使其更简单,以下是我的一些代码:
initPhysics
gravity.Set(0.0f,0.0f);
这样精灵就不会动了.
将ccTouchesEnded中的源代码替换为:
CCTouch*pTouch =(CCTouch*)touches-> anyObject();
CCPoint location = pTouch-> locationInView(pTouch-> view());
CCPoint convLoc = CCDirector :: sharedDirector() - > convertToGL(location);
b2Vec2 v = b2Vec2(convLoc.x/PTM_RATIO,convLoc.y/PTM_RATIO);
for(b2Body*b = world-> GetBodyList(); b; b = b-> GetNext()){
b2Fixture *f = b->GetFixtureList(); // get the first fixture
CCSprite *sprite =(CCSprite *) b->GetUserData();
if(sprite != NULL)
{
if(f -> TestPoint(v))
{
CCLog("You touched a body %d",sprite->getTag());
}
}
Run Code Online (Sandbox Code Playgroud)
}
问题是TestPoint只在非常小的区域内返回true(不是整个形状区域).
这是截图:

任何人都可以建议我如何调试这个问题?谢谢
更新:显示PhysicsEditor生成的数据

当我尝试执行以下代码时,它给了我这个错误:
尝试索引字段'other'(零值)
但我不知道为什么.
代码:
function onCollision(event)
if event.phase == "began" then
if event.other.star == "star" then
score = score + 1
elseif event.other.mine1 == "mine1" then
if jet.collided == false then
timer.cancel(tmr)
jet.collided = true
jet.bodyType = "static"
explode()
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
提前致谢 :)
我正在创建一个可以模拟电场线的python脚本,但箭头图中出现的箭头太大了.我已经尝试过更改单位和比例,但是matplotlib上的文档对我来说也没有意义......当系统中只有一次充电时,这似乎只是一个主要问题,但是箭头仍然略显过大任何数量的指控.箭头往往在所有情况下都过大,但最明显的只有一个粒子.
import matplotlib.pyplot as plt
import numpy as np
import sympy as sym
import astropy as astro
k = 9 * 10 ** 9
def get_inputs():
inputs_loop = False
while inputs_loop is False:
""""
get inputs
"""
inputs_loop = True
particles_loop = False
while particles_loop is False:
try:
particles_loop = True
"""
get n particles with n charges.
"""
num_particles = int(raw_input('How many particles are in the system? '))
parts = []
for i in range(num_particles):
parts.append([float(raw_input("What is the charge …Run Code Online (Sandbox Code Playgroud) 我发现这个脚本可以返回旋转速度(考虑到施加力的位置和距质心的距离).
public Vector3 ForceToTorque(Vector3 force, Vector3 position, ForceMode forceMode = ForceMode.Force)
{
Vector3 t = Vector3.Cross(position - body.worldCenterOfMass, force);
ToDeltaTorque(ref t, forceMode);
return t;
}
private void ToDeltaTorque(ref Vector3 torque, ForceMode forceMode)
{
bool continuous = forceMode == ForceMode.VelocityChange || forceMode == ForceMode.Acceleration;
bool useMass = forceMode == ForceMode.Force || forceMode == ForceMode.Impulse;
if (continuous) torque *= Time.fixedDeltaTime;
if (useMass) ApplyInertiaTensor(ref torque);
}
private void ApplyInertiaTensor(ref Vector3 v)
{
v = body.rotation * Div(Quaternion.Inverse(body.rotation) * v, body.inertiaTensor);
}
private static …Run Code Online (Sandbox Code Playgroud)