aura-glass
Version:
A comprehensive glassmorphism design system for React applications with 142+ production-ready components
126 lines • 3.34 kB
TypeScript
import { SpringConfig } from '../hooks/useMultiSpringBasic';
export interface PhysicsBody {
id: string;
position: {
x: number;
y: number;
};
velocity: {
x: number;
y: number;
};
acceleration: {
x: number;
y: number;
};
mass: number;
radius: number;
friction: number;
restitution: number;
fixed: boolean;
forces: Array<{
x: number;
y: number;
duration?: number;
}>;
}
export interface PhysicsWorld {
bodies: Map<string, PhysicsBody>;
gravity: {
x: number;
y: number;
};
bounds: {
left: number;
right: number;
top: number;
bottom: number;
};
timeStep: number;
substeps: number;
}
export interface CollisionInfo {
bodyA: PhysicsBody;
bodyB: PhysicsBody;
normal: {
x: number;
y: number;
};
penetration: number;
contactPoint: {
x: number;
y: number;
};
}
export declare class GalileoPhysicsSystem {
private world;
private animationFrame;
private lastTime;
private paused;
constructor(config?: Partial<PhysicsWorld>);
addBody(body: PhysicsBody): void;
removeBody(id: string): void;
getBody(id: string): PhysicsBody | undefined;
updateBody(id: string, updates: Partial<PhysicsBody>): void;
applyForce(id: string, force: {
x: number;
y: number;
}, duration?: number): void;
applyImpulse(id: string, impulse: {
x: number;
y: number;
}): void;
start(): void;
stop(): void;
pause(): void;
resume(): void;
private animate;
private step;
private updateForces;
private integrateMotion;
private handleCollisions;
private checkCollision;
private resolveCollision;
private applyConstraints;
setGravity(gravity: {
x: number;
y: number;
}): void;
setBounds(bounds: Partial<PhysicsWorld['bounds']>): void;
getAllBodies(): PhysicsBody[];
clear(): void;
static createCircleBody(id: string, x: number, y: number, radius: number, mass?: number, options?: Partial<PhysicsBody>): PhysicsBody;
static createFixedBody(id: string, x: number, y: number, radius: number): PhysicsBody;
}
export declare function usePhysicsSystem(config?: Partial<PhysicsWorld>): GalileoPhysicsSystem | undefined;
export declare class SpringPhysics {
static calculateSpringForce(current: number, target: number, velocity: number, config: SpringConfig): {
force: number;
newVelocity: number;
};
static interpolateSpring(from: number, to: number, progress: number, config: SpringConfig): number;
}
export declare const physicsUtils: {
calculateTrajectory: (initialPosition: {
x: number;
y: number;
}, initialVelocity: {
x: number;
y: number;
}, gravity: {
x: number;
y: number;
}, time: number) => {
x: number;
y: number;
};
calculateCollisionPoint: (bodyA: PhysicsBody, bodyB: PhysicsBody) => {
x: number;
y: number;
} | null;
applyExplosion: (bodies: PhysicsBody[], center: {
x: number;
y: number;
}, force: number, radius: number) => void;
};
//# sourceMappingURL=galileoPhysicsSystem.d.ts.map