tadd vector math definitions - slidergrid - grid of elastic sliders on a frictional surface
 (HTM) git clone git://src.adamsgaard.dk/slidergrid
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit b6375bd6ba85b2129dcc4e88057883d4f6c9f458
 (DIR) parent cc654a7b73a8bdb1f7771af8e6aa946262d7e0bd
 (HTM) Author: Anders Damsgaard <anders.damsgaard@geo.au.dk>
       Date:   Tue, 15 Mar 2016 13:20:40 -0700
       
       add vector math definitions
       
       Diffstat:
         M Makefile                            |       2 +-
         M slider.c                            |      18 +++++++++++++++++-
         M slider.h                            |      10 ++++++----
         M typedefs.h                          |       4 ++--
         A vector_math.c                       |      27 +++++++++++++++++++++++++++
         A vector_math.h                       |       4 ++++
       
       6 files changed, 57 insertions(+), 8 deletions(-)
       ---
 (DIR) diff --git a/Makefile b/Makefile
       t@@ -3,7 +3,7 @@ CFLAGS=-Wall -O3 -g -pg
        LDLIBS=-lm
        BIN=slidergrid
        
       -$(BIN): main.o slider.o grid.o
       +$(BIN): main.o slider.o grid.o vector_math.o
                $(CC) $(LDLIBS) $^ -o $@
        
        profile: $(BIN)
 (DIR) diff --git a/slider.c b/slider.c
       t@@ -1,7 +1,23 @@
        #include <stdio.h>
       +#include "typedefs.h"
        #include "slider.h"
       +#include "vector_math.h"
        
        void print_slider_position(slider s)
        {
            printf("%f\t%f\t%f\n", s.pos.x, s.pos.y, s.pos.z);
       -};
       +}
       +
       +void integrate_kinematics(slider s, Float dt, int iteration)
       +{
       +
       +
       +
       +    if (iteration == 0) {
       +        Float3 acc0 = make_float3(0., 0., 0.);
       +    }
       +    
       +
       +
       +
       +}
 (DIR) diff --git a/slider.h b/slider.h
       t@@ -4,10 +4,10 @@
        #include "typedefs.h"
        
        typedef struct {
       -    v3 pos;  // spatial position
       -    v3 vel;  // spatial velocity
       -    v3 acc;  // spatial acceleration
       -    v3 force;  // sum of forces
       +    Float3 pos;  // spatial position
       +    Float3 vel;  // spatial velocity
       +    Float3 acc;  // spatial acceleration
       +    Float3 force;  // sum of forces
            Float bulk_modulus;  // elastic compressibility
            int neighbors[];  // indexes of sliders this one is bonded to
        } slider;
       t@@ -15,4 +15,6 @@ typedef struct {
        
        void print_slider_position(slider s);
        
       +void integrate_kinematics(slider s, Float dt, int iteration);
       +
        #endif
 (DIR) diff --git a/typedefs.h b/typedefs.h
       t@@ -5,11 +5,11 @@
        //typedef float Float;
        typedef double Float;
        
       -
       +// 3-dimensional vector
        typedef struct {
            Float x;
            Float y;
            Float z;
       -} v3;
       +} Float3;
        
        #endif
 (DIR) diff --git a/vector_math.c b/vector_math.c
       t@@ -0,0 +1,27 @@
       +#include "typedefs.h"
       +
       +inline Float3 make_float3(Float x, Float y, Float z)
       +{
       +    Float3 v = {.x = x, .y = y, .z = z};
       +    return v;
       +}
       +
       +inline Float3 add_float3(Float3 v1, Float3 v2)
       +{
       +    return make_float3(v1.x + v2.x, v1.y + v2.y, v1.z + v2.z);
       +}
       +
       +inline Float3 subtract_float3(Float3 v1, Float3 v2)
       +{
       +    return make_float3(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z);
       +}
       +
       +inline Float3 multiply_float3(Float3 v1, Float3 v2)
       +{
       +    return make_float3(v1.x * v2.x, v1.y * v2.y, v1.z * v2.z);
       +}
       +
       +inline Float3 divide_float3(Float3 v1, Float3 v2)
       +{
       +    return make_float3(v1.x / v2.x, v1.y / v2.y, v1.z / v2.z);
       +}
 (DIR) diff --git a/vector_math.h b/vector_math.h
       t@@ -0,0 +1,4 @@
       +#include "typedefs.h"
       +
       +inline Float3 make_float3(Float x, Float y, Float z);
       +