Banjo API 0.0.1
C99 game development API
Loading...
Searching...
No Matches
physics_particle.c File Reference
#include <banjo/assert.h>
#include <banjo/bitmap.h>
#include <banjo/draw.h>
#include <banjo/event.h>
#include <banjo/log.h>
#include <banjo/main.h>
#include <banjo/mat.h>
#include <banjo/physics.h>
#include <banjo/physics_2d.h>
#include <banjo/renderer.h>
#include <banjo/system.h>
#include <banjo/time.h>
#include <banjo/vec.h>
#include <banjo/window.h>
#include <stdlib.h>
Include dependency graph for physics_particle.c:

Data Structures

struct  planet_t

Macros

#define BJ_AUTOMAIN_CALLBACKS
#define SCREEN_WIDTH   800
#define SCREEN_HEIGHT   600
#define CANVAS_WIDTH   SCREEN_WIDTH
#define CANVAS_HEIGHT   SCREEN_HEIGHT
#define G_SUN   BJ_F(120.0)
#define SOFTENING   BJ_F(6.0)
#define M_SUN   BJ_F(1000.0)
#define M_MERCURY   BJ_F(0.055)
#define M_VENUS   BJ_F(0.815)
#define M_EARTH   BJ_F(1.0)
#define M_MARS   BJ_F(0.107)
#define M_JUPITER   BJ_F(317.8)
#define N_PLANETS   5
#define N_ASTEROIDS   800
#define DT_CLAMP   (BJ_F(1.0)/BJ_F(120.0))

Functions

static void update_projection ()
static bj_real orbital_speed_soft (bj_real G, bj_real M, bj_real r, bj_real eps)
static void init_sun ()
static void init_planet (planet_t *p, bj_real r, bj_real mass, uint32_t color, bj_real draw_r, bj_real phase)
static void init_asteroids ()
static void initialize ()
static void update (bj_real t)
static void physics (bj_real dt)
static void draw ()
int bj_app_begin (void **user_data, int argc, char *argv[])
int bj_app_iterate (void *user_data)
int bj_app_end (void *user_data, int status)

Variables

bj_windowwindow = 0
bj_bitmapframebuffer = 0
bj_rendererrenderer = 0
bj_mat3x3 projection
planet_t planets [5]
bj_particle_2d sun = {0}
bj_particle_2d asteroids [800]
uint32_t asteroid_color
bj_stopwatch stopwatch

Data Structure Documentation

◆ planet_t

struct planet_t
Collaboration diagram for planet_t:
Data Fields
bj_particle_2d body
uint32_t color
bj_real radius

Macro Definition Documentation

◆ BJ_AUTOMAIN_CALLBACKS

#define BJ_AUTOMAIN_CALLBACKS

◆ CANVAS_HEIGHT

#define CANVAS_HEIGHT   SCREEN_HEIGHT

◆ CANVAS_WIDTH

#define CANVAS_WIDTH   SCREEN_WIDTH

◆ DT_CLAMP

#define DT_CLAMP   (BJ_F(1.0)/BJ_F(120.0))

◆ G_SUN

#define G_SUN   BJ_F(120.0)

◆ M_EARTH

#define M_EARTH   BJ_F(1.0)

◆ M_JUPITER

#define M_JUPITER   BJ_F(317.8)

◆ M_MARS

#define M_MARS   BJ_F(0.107)

◆ M_MERCURY

#define M_MERCURY   BJ_F(0.055)

◆ M_SUN

#define M_SUN   BJ_F(1000.0)

◆ M_VENUS

#define M_VENUS   BJ_F(0.815)

◆ N_ASTEROIDS

#define N_ASTEROIDS   800

◆ N_PLANETS

#define N_PLANETS   5

◆ SCREEN_HEIGHT

#define SCREEN_HEIGHT   600

◆ SCREEN_WIDTH

#define SCREEN_WIDTH   800

◆ SOFTENING

#define SOFTENING   BJ_F(6.0)

Function Documentation

◆ bj_app_begin()

int bj_app_begin ( void ** user_data,
int argc,
char * argv[] )

◆ bj_app_end()

int bj_app_end ( void * user_data,
int status )

◆ bj_app_iterate()

int bj_app_iterate ( void * user_data)

◆ draw()

void draw ( )
static

◆ init_asteroids()

void init_asteroids ( )
static

◆ init_planet()

void init_planet ( planet_t * p,
bj_real r,
bj_real mass,
uint32_t color,
bj_real draw_r,
bj_real phase )
static

◆ init_sun()

void init_sun ( )
static

◆ initialize()

void initialize ( )
static

◆ orbital_speed_soft()

bj_real orbital_speed_soft ( bj_real G,
bj_real M,
bj_real r,
bj_real eps )
static

◆ physics()

void physics ( bj_real dt)
static

◆ update()

void update ( bj_real t)
static

◆ update_projection()

void update_projection ( )
static

Variable Documentation

◆ asteroid_color

uint32_t asteroid_color

◆ asteroids

bj_particle_2d asteroids[800]

◆ framebuffer

bj_bitmap* framebuffer = 0

◆ planets

planet_t planets[5]

◆ projection

bj_mat3x3 projection

◆ renderer

bj_renderer* renderer = 0

◆ stopwatch

bj_stopwatch stopwatch

◆ sun

bj_particle_2d sun = {0}

◆ window

bj_window* window = 0