标签: physics

3d图形引擎的这个属性的名称和最常见的实现是什么?

我想说"不受限制的参考框架"或"空间相关的独立子环境",但我不认为这些是正确的.

想象一下两个长而圆柱形的太空船在一个水平面上相互浮动,方向相同.每艘船都有自己的房间和走廊,玩家可以在第一人称环境中自由移动.透过窗户看,每艘船的船员都可以向另一艘船的船员微笑并挥手.

第一艘船发射推进器并第二艘船移动.两艘船停靠,气闸打开.第一船的工作人员现在需要爬起来进入第二艘.气闸关闭,船只分离.

第一艘船再次移动,只是这次它停靠第二艘船的顶部.气闸打开,这次第一艘船的船员需要向下移动到第二艘船.

每艘船都是一个独立的3d环境,它与更大的全球环境中的其他独立环境进行交互.

我看到两种可能的实现.

1)"移动者".每艘船对其内部的每个物体施加一个力.当第一艘船相对于第二艘船运动时,该运动被转换为船员以改变其全球空间位置.这看起来很贵......

2)"骗子".每艘船的窗口都显示虚拟全球空间的模拟输出,但船只及其内容并未真正相对于彼此移动.船舶之间的连接是一个动态门户,以正确的方向连接两个船舶"房间".

这个属性的名称是什么?我可以在哪里找到真实3D引擎中的示例?

3d physics

3
推荐指数
1
解决办法
481
查看次数

优化Mathematica中的内循环计算

我目前正在Mathematica中进行一些与量子力学相关的计算.随着我们从1D变为2D点阵模型,问题规模变得越来越成问题

目前,我们的总结看起来像这样:

corr[r1_, r2_, i_, j_] = Sum[Cos[f[x1, x2] Angle[i] r1 + f[y1, y2] Angle[j] r2], {x1, HL}, {x2, HL}, {y1, HL + 1, 2 HL}, {y2, HL + 1, 2 HL}];
Run Code Online (Sandbox Code Playgroud)

F[.,.]是预先计算的相关函数的查找函数,并且Angle [.]也是预先计算的.

完全没有办法以任何方式进一步简化这一点.我们已经通过将复指数(具有零虚部)转换为上面的余弦表达式来进行简单优化.

最大的问题是那些HL是基于尺寸大小的:对于沿轴的线性尺寸L,HL对应于L ^ d(这里d = 2).所以我们的计算实际上是O(n ^ 8),而忽略了i,j的和.

对于L = 8,这通常不是太糟糕,如果不是因为我们对r1的125个值进行迭代,而对r2的125进行迭代以创建125×125的图像.

我的问题是:如何在Mathematica中最有效地计算出来?我会用另一种语言来做这件事,但是如果我在像C++这样的东西中尝试它会有一些问题会使它变得那么慢.

额外信息:这是ND-ND(数字密度)相关计算.所有x和y都指的是离散2D网格上的discete点.这里唯一不分散的东西是我们的r.

math optimization physics wolfram-mathematica

3
推荐指数
1
解决办法
441
查看次数

Java中的简单物理仿真无法正常工作.

我想实现球物理,作为新手,我在教程http://adam21.web.officelive.com/Documents/JavaPhysicsTutorial.pdf中修改了代码 .

我试着尽可能地遵循它,但我不能在代码中应用所有物理现象,有人可以请告诉我,我错误或我仍在做一些愚蠢的编程错误.

当我没有调用弹跳方法并且我无法利用弹跳方法并且球向左侧移动而不是在地板上跌落/结束时,球正在移动**,

有些身体可以推荐我一些更好的方法或类似的简单方法来完成这个任务,在两个球或更多的球交互性上应用物理.

这是代码;

    import java.awt.*;
    public class AdobeBall {

    protected int radius = 20;
    protected Color color;

    // ... Constants
    final static int DIAMETER = 40;

    // ... Instance variables
    private int m_x; // x and y coordinates upper left
    private int m_y;

    private double dx = 3.0; // delta x and y 
    private double dy = 6.0;

    private double m_velocityX; // Pixels to move each time move() is called.
    private …
Run Code Online (Sandbox Code Playgroud)

java simulation implementation physics

3
推荐指数
1
解决办法
1951
查看次数

Box2D b2世界级

所以我有:


class bc_Game
{
public:
//blah
private:
b2World world;
};

bc_Game::bc_Game()
{
//blah, defining variables used
world = b2World(gravity, sleep);
}

现在,我只是得到错误:没有匹配函数调用 'b2World :: b2World()' 注:考生:b2World :: b2World(常量b2Vec2&,布尔)注:b2World :: b2World(常量b2World&)

我不知道如何让它工作,我已经尝试过std :: auto_ptr,新的b2World,我能想到的一切.

b2World是Box2D的一部分,但是这里......

 
/*
* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com
*
* This software is provided 'as-is', without any express or implied
* warranty.  In no event will the authors be held liable for any damages
* arising from the use of this software.
* Permission is granted …
Run Code Online (Sandbox Code Playgroud)

c++ physics 2d box2d

3
推荐指数
1
解决办法
6006
查看次数

Box2D机身在碰撞时不会旋转

我一直试图进入Box2DWeb,这是Box2D的AS端口的JS端口.只是尝试进行简单的设置,其中有一个静态斜坡和一个动态框.这是我的代码:

var b2World =  Box2D.Dynamics.b2World;
var b2DebugDraw = Box2D.Dynamics.b2DebugDraw;
var b2Vec2 = Box2D.Common.Math.b2Vec2;
var b2BodyDef = Box2D.Dynamics.b2BodyDef;
var b2Body = Box2D.Dynamics.b2Body;
var b2FixtureDef = Box2D.Dynamics.b2FixtureDef;
var b2PolygonShape = Box2D.Collision.Shapes.b2PolygonShape;
var b2CircleShape = Box2D.Collision.Shapes.b2CircleShape;

var width = 8;
var height = 4;

var world = new b2World(new b2Vec2(0, 10), true);

var debugDraw = new b2DebugDraw();
debugDraw.SetSprite(document.getElementById("canvas").getContext("2d"));
debugDraw.SetDrawScale(100); //Arena is 8 meters by 4 meters
debugDraw.SetFillAlpha(0.5);
debugDraw.SetLineThickness(1);
debugDraw.SetFlags(b2DebugDraw.e_shapeBit);
world.SetDebugDraw(debugDraw);

var bodyDef = new b2BodyDef();
bodyDef.type = b2Body.b2_staticBody;
bodyDef.position.Set(3.5, 3)
var …
Run Code Online (Sandbox Code Playgroud)

javascript physics canvas box2d

3
推荐指数
2
解决办法
5256
查看次数

计算径向速度

我试图在多普勒频移雷达中模拟噪声滤波.它应该过滤掉相对于雷达低于25米/秒的物体(接近或移开).应该有两种避免雷达探测的方法:如果物体在任何方向上移动但速度低于25米/秒,或以任何速度移动但垂直于(或更确切地说,盘旋)雷达.在这两种情况下,物体相对于固定雷达的径向速度应低于25 m/s,因此愚弄雷达将其滤除为噪声.我知道物体位置和速度矢量(2D和3D).谈到数学,我是一个完全白痴,所以我无法理解这一点.有什么帮助吗?

编辑:形成错误的问题.我想获得相对于雷达的真实径向速度和过滤速度超过25 m/s的物体,但是相对航向会使雷达的径向速度小于25 m/s.一个例子可能是以30米/秒的速度移动并且垂直于雷达45度的物体将被滤除,但如果物体以300米/秒的速度移动则不会被过滤掉.

math lua physics

3
推荐指数
1
解决办法
2581
查看次数

如何为重力设置不同的值?

我在Xcode中使用Sprite Kit,我想更改在重力上设置的默认值.这是我的代码:

SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"sprite1.png"];
        sprite.position = CGPointMake(-100+CGRectGetMidX(self.frame), 50 + CGRectGetMidY(self.frame));
        [self addChild:sprite];
        sprite.color = [SKColor blueColor];
        sprite.colorBlendFactor = 1.0;
        sprite.xScale = 0.2;
        sprite.yScale = 0.2;
        [SKPhysicsBody bodyWithCircleOfRadius:50];
        sprite.physicsBody.dynamic = YES;
        sprite.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:sprite.size.width * 0.5];
Run Code Online (Sandbox Code Playgroud)

现在我知道使用这行代码应该提供默认设置但我现在无法运行项目:

//self.physicsWorld.gravity = CGPointMake(0.0, -9.8);
Run Code Online (Sandbox Code Playgroud)

救命?

physics gravity sprite-kit skphysicsbody

3
推荐指数
1
解决办法
6613
查看次数

WebGL / Three.js中的软件?

有什么方法可以将软件物理与WebGL或threejs集成在一起?我可以以某种方式集成例如PhysX引擎吗?

我需要在3d软体内移动3d刚体并使软体变形以响应。理想地,该软体将具有与粘土相似的塑性。

我正在努力实现的目标是否可能?

任何建议或指示将不胜感激。

javascript physics webgl three.js softbody

3
推荐指数
2
解决办法
1786
查看次数

使用python和FFT计算均方位移

给定一个二维数组,其中每一行代表一个粒子的位置矢量,如何有效地计算均方位移(使用FFT)?均方位移定义为

delta_sq

其中r(m)是行m的位置矢量,N是行数.

python physics numpy fft

3
推荐指数
1
解决办法
2967
查看次数

使用必需的init(nscoder)时从代码设置物理主体

我正在尝试利用init?(编码器aDecoder:NSCoder)函数,以便我可以在我的sks文件中创建子类sprite.

我可以在sks文件中设置物理体,但是对于我正在使用的也有圆角的矩形精灵,它不能很好地工作.由于圆角,在使用init函数之前,我在代码中设置了物理体,并将宽度设置为略小于正方形宽度(当我的英雄从正方形滑落时,那里没有间隙圆角是......

我知道我可以使用alpha蒙版物理体来获得相同的效果,除此之外,当我的英雄在块上时似乎有1个px'的间隙,并且看起来不太好.

想知道为什么我不能设置这个物理机构,以及我如何能够做到这一点或绕过它?

谢谢你的帮助!!!

更新:

    required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    if let p = userData?.value(forKey: "col") as? String {
        setup(p)
        print("working")
    }
}
func setup(_ col: String) {
    setupPhysics()
    //allSprites.append(self)
Run Code Online (Sandbox Code Playgroud)

在setupPhysics我有:

override func setupPhysics() {
    physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: frame.width - 4, height: frame.height - 1))
...more code...
}
Run Code Online (Sandbox Code Playgroud)

这是我的精灵代码,我在sks文件中正确设置了它...

我评论了对所有精灵的追加,以便我可以证明它不起作用.随着append取消注释,sprite会被添加到allSprites,然后在Scene文件中的didMove函数中,它遍历allSprites并运行setupPhysics():

  func setup(_ col: String) {
    //setupPhysics()
    allSprites.append(self)

// scene file
    func setupAllSpritesPhysics() {
    for sprite in allSprites { sprite.setupPhysics() }
}
Run Code Online (Sandbox Code Playgroud)

@ Knight0fDragon:

你提到这是一个丑陋的修复.鉴于它不会以"正确"的方式运作,我不同意.目前我没有足够的精灵在场景加载中造成任何延迟.如果是这样的话,我可以在将来调查这个问题.

我承认我没有尝试过你提到的方法,因为我不想为我创建的每个精灵创建一个子节点,以便即使它可以解决这个问题.到目前为止,我很欣赏这个建议.

physics initialization ios sprite-kit swift

3
推荐指数
1
解决办法
81
查看次数