标签: physics

Matlab:用biot-savarts法计算的磁场

这是使用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)

optimization matlab physics

0
推荐指数
1
解决办法
5666
查看次数

确定撞击的相对速度?

我试图找出一种方法来确定身体在2D环境中与另一个身体相撞的相对速度.

例如,如果一个物体在(1,0)处移动而另一个物体在其后面行进,则在(2,0)处从后面与其碰撞时,撞击相对于第一物体的速度为(1,0).

我需要一种方法,它采用两种速度,一种速度属于身体,速度被测量,另一种速度用于撞击身体并返回相对速度.

c# xna physics gesture

0
推荐指数
1
解决办法
214
查看次数

基于小型物理程序的无限循环

这是一个模拟网球被抛出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)

c physics

0
推荐指数
1
解决办法
181
查看次数

需要关于愤怒的鸟类物理学的帮助

作为一个学校项目,我采取了在matlab中制作愤怒的小鸟克隆.在研究了一点之后,我意识到也许我会更多,然后我可以咀嚼.

目前我正在研究它的物理学,虽然我理解游戏背后的机制(碰撞,惯性和诸如此类),但我不知道我将如何在游戏中实现它.我是编程的新手,但我喜欢它并且很快就抓住了它.

在愤怒的小鸟中,我们正在处理几个OBB之间的碰撞,我有一个检测碰撞的算法.我有一个功能,检查每个框的所有角落,并查看它是否在另一个框内.我意识到这不是最好的方法,但由于我无法想象分离轴定理,我选择不使用它.

当碰撞发生时,盒子正在穿透另一个盒子,当发生这种情况时,我会在其前一个点和当前点之间进行线性插值.我对一个实例中的所有碰撞点执行此操作(这是我解决多个碰撞的方法).使用插值我检测发生的第一次碰撞,并实现碰撞响应.

我现在的问题是,当有一个盒子放在另一个盒子的顶部时,这种方法不能很好地工作,因为在每种情况下,顶盒都会轻微地进入底部,然后我将它弹回.这导致我的整个事情停止,因为我回到过去,解决碰撞,然后在下一个例子中碰撞再次发生.

我的问题是,我如何解决多个盒子彼此叠加的问题.

我已经通过http://www.wildbunny.co.uk查看了有关物理学的所有文章并尝试了解他的方法,但是当我明白他做了什么时,我不知道他是怎么做到的.我也不知道任何动作脚本这么多他的代码对我来说都是胡言乱语.

我已经浏览了互联网上的其他几个指南,但似乎没有一个对我有意义.

这对我来说有什么帮助,如果有人能告诉我通常用什么方法来实现像愤怒的小鸟这样的游戏图形,特别是多重碰撞方法(我的足够好还是我需要像wildbunny在他的博客中谈论的投机性联系人,以及关于盒子问题的盒子.

这个项目难以进行两周吗?

matlab physics

0
推荐指数
1
解决办法
875
查看次数

Java中的3D模拟

我从未做过任何3D编程,并且正在进行3D飞机碰撞模拟.我打算用Java做,虽然我知道C++可能更受欢迎,但我没有经验,而且时间有限.

任何人都可以推荐任何引擎或包装?我知道有Java3D,但现在不是有点老了吗?我也见过JMonkey Engine,虽然这是游戏,我相信它对于模拟软件会没问题吗?

谢谢!

java simulation 3d physics java-3d

0
推荐指数
1
解决办法
3130
查看次数

车祸的最低门槛

我正在使用加速度计来检测车祸.我有一个问题,需要最低阈值来检测车祸.检测车祸所需的最低阈值.

@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)

android physics

0
推荐指数
1
解决办法
4247
查看次数

如何检测由Cocos2d-x中的PhyicsEditor创建的box2d夹具内的触摸?

我的测试环境:

Xcode 4.6,新cocos2d-x + box2d项目cocos2d-2.1beta3-x-2.1.1 PhysicsEditor 1.0.10

我在PhysicsEditor cocos2dx演示的HelloWorldScene中修改了一下以使其更简单,以下是我的一些代码:

  1. initPhysics

    gravity.Set(0.0f,0.0f);

这样精灵就不会动了.

  1. 将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生成的数据

在此输入图像描述

physics touch box2d cocos2d-x

0
推荐指数
1
解决办法
2559
查看次数

Lua碰撞零值

当我尝试执行以下代码时,它给了我这个错误:

尝试索引字段'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)

提前致谢 :)

null lua physics collision

0
推荐指数
1
解决办法
129
查看次数

Matplotlib中的箭头图箭头太可笑了

我正在创建一个可以模拟电场线的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)

python physics matplotlib

0
推荐指数
1
解决办法
1955
查看次数

在位置C#Unity处给定力,计算GameObject的旋转速度

我发现这个脚本可以返回旋转速度(考虑到施加力的位置和距质心的距离).

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)

c# physics vector unity-game-engine game-physics

0
推荐指数
1
解决办法
572
查看次数