This repository has been archived on 2026-05-18. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
libsdlgame/Physics.h

65 lines
2.1 KiB
C
Raw Normal View History

#ifndef __PHYSICS_H__
#define __PHYSICS_H__
// x = pounds to convert to newtons
#define CALC_CONV_LB2NEWTON(x) ((x)*4.44822162)
// x = ounces to convert to newtons
#define CALC_CONV_OZ2NEWTON(x) (((x)*4.44822162)/16)
// x = kilograms to convert to newtons
#define CALC_CONV_KG2NEWTON(x) ((x)*9.81)
// x = milligrams to convert to newtons
#define CALC_CONV_MG2NEWTON(x) (((x)*9.81)/1000
// W = weight in newtons, g = constant acceleration of gravity
#define CALC_MASSFROMWEIGHT(W, g) ((W)/(g))
// F = Force applied to object, a = acceleration of object
#define CALC_MASSFROMFORCE(F, a) ((F)/(a))
// v = linear velocity of object, r = radius of circular path
#define CALC_ACCEL_CENTRIPETAL(v, r) (((v)*(v))/(r))
// v1 = starting velocity, v2 = ending velocity, t = time elapsed between v1 and v2
#define CALC_ACCEL_VELOCITYDELTA(v1, v2, t) (((v2)-(v1)) / (t))
// F = force applied to object, m = mass of object
#define CALC_ACCEL_FORCE(F, m) ((F)/(m))
// d = distance object has traveled, t = time object has spent in motion
#define CALC_VELOCITY_AVG(d, t) ((d)/(t))
// W = Weight of object, H = Height of object above the ground plane
#define CALC_ENERGY_POTENTIAL(W, H) ((W)*(H))
// m = mass of object, v = velocity of object
#define CALC_ENERGY_KINETIC(m, v) (((m)*(v))/2)
#define PHYSICS_NOPHYSICS 0000000000000000b
#define PHYSICS_FRICTIONLESS 0000000000000001b
#define PHYSICS_NOGRAVITY 0000000000000010b
#define PHYSICS_MATERIAL_LIQUID 0000000000000100b
#define PHYSICS_MATERIAL_GAS 0000000000001000b
#define PHYSICS_MATERIAL_SOLID 0000000000010000b
struct WorldPhysics
{
float gravity;
float airfriction;
}
struct StaticPhysics
{
float friction;
float bouyancy;
int flags;
}
struct ObjectPhysics : public StaticPhysics
{
float mass;
float weight;
float p1; // position 1, used for calculating velocity
float p2; // position 2, "" " " "
float v1; // velocity 1, used for calculation acceleration
float v2; // velocity 2, " " " "
float pe; // potential energy of an object at rest
float ke; // kinetic energy of a moving object
}
#endif