A fixed step 2D physics engine: rigid bodies, broad and narrow phase collision, revolute, prismatic, spring and weld joints, force fields, SPH fluids and boids flocking, plus force driven label placement.
Microsoft.VisualBasic.Imaging.Physics 1.0.9762.11310.
01 Namespaces
Microsoft.VisualBasic.Imaging.Physics
| Type | Summary | Members |
|---|---|---|
| FluidEngine3D | A 3D Smoothed Particle Hydrodynamics (SPH) water simulation engine. | 18 |
| FluidKernels | SPH smoothing kernels used by FluidEngine. | 5 |
| FluidKernels3D | SPH smoothing kernels used by the 3D fluid engine FluidEngine3D. | 5 |
| ForceMath | 8 | |
| Grid3D | The 3D counterpart of the 2D GridDynamics spatial hash. | 3 |
| IContainer3D | the 3D volume container of the particles(the 3D counterpart of the 2D IContainer). | 2 |
| Particle | 1 | |
| Particle3D | A single water particle inside the 3D SPH fluid simulation. | 6 |
| PhysicsMaterial | 物理材质:摩擦系数 (friction) 与恢复系数 (restitution)。 碰撞时由碰撞双方材质组合得到最终的接触参数。 | 4 |
| PhysicsWorld | 2D 物理世界。以 PhysicsWorld.Step()) 固定步长驱动,内部按子步执行: 施加力场 → 由力积分速度 → 宽相位 → 窄相位 → 顺序冲量求解(接触 + 关节)→ 由速度积分位置 → 关节位置修正。 可直接接入游戏主循环(每帧调用一次 PhysicsWorld.Step()) 传入真实 dt)。 | 20 |
| RigidBody | 2D 刚体。不会发生形变,受力后整体平动 + 转动。 位置 RigidBody.Position 表示质心(世界坐标),RigidBody.Rotation 为 2D 标量角(弧度)。 | 36 |
| Vector2Math | unity math + 2D rigid body helpers | 6 |
| Vector3 | A self-contained double precision 3D vector used by the 3D fluid simulation engine FluidEngine3D. | 18 |
Microsoft.VisualBasic.Imaging.Physics.Boids
The boids flocking simulation.
Microsoft.VisualBasic.Imaging.Physics.Collision
Broad and narrow phase collision detection for the physics engine.
| Type | Summary | Members |
|---|---|---|
| AABB | 轴对齐包围盒 | 2 |
| BroadPhase | Broad Phase 宽相位剔除。将所有刚体的 AABB 写入均匀网格, 只返回网格相邻单元内可能相交的物体对,将碰撞检测从 O(n²) 降到约 O(n)。 | 1 |
| CircleCollider | 圆形碰撞体,圆心位于局部原点(= 质心) | 3 |
| Collider | 碰撞几何体基类 | 3 |
| ContactSolver | 顺序冲量接触求解器。对每个接触点迭代计算法向冲量(含恢复系数与 Baumgarte 穿透修正)和切向冲量(库仑摩擦),并将冲量应用到两个刚体。 | 7 |
| Manifold | 碰撞流形(接触信息)。法向量 Manifold.Normal 由 A 指向 B。 接触点最多 2 个(世界坐标),用于顺序冲量求解。 | 16 |
| NarrowPhase | Narrow Phase 窄相位精确碰撞检测。根据几何体类型分派到具体算法, 生成 Manifold(法向由 A 指向 B、穿透深度、接触点)。 | 5 |
| PolygonCollider | 凸多边形碰撞体,顶点存储为相对质心(中心)的局部坐标 | 10 |
Microsoft.VisualBasic.Imaging.Physics.Collision.BroadPhase
| Type | Summary | Members |
|---|---|---|
| BodyPair | 一对可能发生碰撞的刚体 | 2 |
Microsoft.VisualBasic.Imaging.Physics.ForceFields
Force field implementations (gravity and similar) applied by the physics engine.
| Type | Summary | Members |
|---|---|---|
| ForceField | 力场基类。覆盖一个区域(ForceField.Region,为 Nothing 时表示全局), 每步对场内刚体施加力。派生类实现 ForceField.Apply())。 | 4 |
| GravityField | 重力场:对场内每个刚体施加 F = m·g(默认向下)。 可用于创建局部重力井或不同强度的重力区域。 | 3 |
| MagneticField | 磁力场(点源):以 MagneticField.Center 为中心,对场内刚体施加随距离 平方衰减的吸引或排斥力,模拟磁极/引力井等效果。 | 9 |
| WindField | 风力场:在区域内沿 WindField.Direction 施加风力,叠加正弦湍流使效果更自然。 力大小与刚体质量成正比(类比气压对物体的作用)。 | 7 |
Microsoft.VisualBasic.Imaging.Physics.Joints
Physics joints: revolute, prismatic, spring and weld constraints between rigid bodies.
| Type | Summary | Members |
|---|---|---|
| IConstraint | 约束(关节)统一接口。在物理世界的速度迭代阶段调用 IConstraint.SolveVelocity()), 在位置阶段调用 IConstraint.SolvePosition()) 做穿透/漂移修正。 | 2 |
| PrismaticJoint | 滑块(棱柱)关节:允许两个刚体沿给定世界轴 PrismaticJoint.axis 自由滑动, 但约束垂直于该轴的相对平移以及相对旋转。 | 6 |
| RevoluteJoint | 铰链(旋转)关节:将两个刚体在各自的局部锚点处钉在一起,允许绕该点自由旋转。 在 2D 中这与球窝关节等价。 | 8 |
| SpringJoint | 弹簧关节:在两个刚体的锚点之间施加胡克弹力(与形变成正比)和阻尼力 (与相对速度成正比),模拟弹性连接(如绳索、弹簧、悬挂)。 | 12 |
| WeldJoint | 固定(焊接)关节:将两个刚体的相对位置与相对角度完全锁定, 相当于刚性连接(如焊接、铆接)。 | 6 |
Microsoft.VisualBasic.Imaging.Physics.layout
Force driven label placement layout for 2D scenes.
| Type | Summary | Members |
|---|---|---|
| AbstractForce | @author Helder Suzuki | 0 |
| Displacement | @author Helder Suzuki | 1 |
| ForceLayoutData | @author Helder Suzuki | 3 |
| ForceVector | @author Helder Suzuki | 10 |
| ForceVectorNodeLayoutData | @author Mathieu Bastian | 6 |
| ForceVectorUtils | @author Mathieu Jacomy | 2 |
| LabelAdjust | @author Mathieu Jacomy | 6 |
| LabelAdjustLayoutData | @author Mathieu Bastian | 0 |
| Node | the layout data model | 0 |
| ProportionalDisplacement | The movement of the node is in the direction of the force and it's proportional to is module. | 1 |
| StepDisplacement | The node is moved a fixed distance (step) in the direction of the force. | 1 |
| TextProperties | the label drawing style data | 2 |
Microsoft.VisualBasic.Imaging.Physics.Particles2D
SPH particle based fluid simulation in 2D.
| Type | Summary | Members |
|---|---|---|
| Emitter | 粒子发射器:在 Emitter.Position 处沿 Emitter.BaseAngle 方向、 以 Emitter.Spread 张角随机产生粒子。支持一次性爆发或持续生成。 | 15 |
| GameParticle | 单个粒子。数据极简(位置、速度、寿命、尺寸、颜色), 不与其他物理系统耦合以支持海量粒子。 | 8 |
| ParticleSystem | 轻量粒子系统。使用对象池复用 GameParticle,避免频繁分配; 每个粒子仅受重力与线性阻力影响,可承载海量粒子(爆炸、火花、灰尘、魔法等)。 不与刚体耦合,以保证性能。 | 8 |