Introduction
Introduction Statistics Contact Development Disclaimer Help
tadd more helper functions, complete TY3 integration scheme - slidergrid - grid…
git clone git://src.adamsgaard.dk/slidergrid
Log
Files
Refs
README
LICENSE
---
commit a270ef4ab316d4b52745938eb25ed87749b5fe0a
parent 129e0df22ec2470c059710b4b60635192552c0db
Author: Anders Damsgaard <[email protected]>
Date: Tue, 15 Mar 2016 13:43:44 -0700
add more helper functions, complete TY3 integration scheme
Diffstat:
M slider.c | 12 ++++++++----
M vector_math.c | 45 +++++++++++++++++++++++++++++…
M vector_math.h | 12 +++++++++++-
3 files changed, 62 insertions(+), 7 deletions(-)
---
diff --git a/slider.c b/slider.c
t@@ -8,10 +8,10 @@ void print_slider_position(slider s)
printf("%f\t%f\t%f\n", s.pos.x, s.pos.y, s.pos.z);
}
+/* Explicit temporal integration scheme based on three-term Taylor expansion */
void integrate_kinematics(slider s, Float dt, int iteration)
{
-
-
+ s.acc = divide_float3_scalar(s.force, s.mass);
Float3 acc0;
if (iteration == 0) {
t@@ -30,9 +30,13 @@ void integrate_kinematics(slider s, Float dt, int iteration)
s.vel.y*dt + 0.5*s.acc.y*dt*dt + 1./6.*dacc_dt.y*dt*dt*dt,
s.vel.z*dt + 0.5*s.acc.z*dt*dt + 1./6.*dacc_dt.z*dt*dt*dt);
- s.pos = add_float3(s.pos, dpos_dt);
-
+ const Float3 dvel_dt = make_float3(
+ s.acc.x*dt + 0.5*dacc_dt.x*dt*dt,
+ s.acc.y*dt + 0.5*dacc_dt.y*dt*dt,
+ s.acc.z*dt + 0.5*dacc_dt.z*dt*dt);
+ s.pos = add_float3(s.pos, dpos_dt);
+ s.vel = add_float3(s.vel, dvel_dt);
}
diff --git a/vector_math.c b/vector_math.c
t@@ -1,11 +1,20 @@
#include "typedefs.h"
+
+// constructor
inline Float3 make_float3(Float x, Float y, Float z)
{
Float3 v = {.x = x, .y = y, .z = z};
return v;
}
+inline Float3 copy_float3(Float3 v)
+{
+ return make_float3(v.x, v.y, v.z);
+}
+
+
+// vector-vector operations
inline Float3 add_float3(Float3 v1, Float3 v2)
{
return make_float3(v1.x + v2.x, v1.y + v2.y, v1.z + v2.z);
t@@ -26,7 +35,39 @@ inline Float3 divide_float3(Float3 v1, Float3 v2)
return make_float3(v1.x/v2.x, v1.y/v2.y, v1.z/v2.z);
}
-inline Float3 copy_float3(Float3 v)
+
+// vector-scalar operations
+inline Float3 add_float3_scalar(Float3 v, Float s)
{
- return make_float3(v.x, v.y, v.z);
+ return make_float3(v.x + s, v.y + s, v.z + s);
+}
+
+inline Float3 add_scalar_float3(Float s, Float3 v)
+{
+ return add_float3_scalar(v, s);
+}
+
+inline Float3 subtract_float3_scalar(Float3 v, Float s)
+{
+ return make_float3(v.x - s, v.y - s, v.z - s);
+}
+
+inline Float3 subtract_scalar_float3(Float s, Float3 v)
+{
+ return make_float3(s - v.x, s - v.y, s - v.z);
+}
+
+inline Float3 multiply_float3_scalar(Float3 v, Float s)
+{
+ return make_float3(v.x*s, v.y*s, v.z*s);
+}
+
+inline Float3 divide_float3_scalar(Float3 v, Float s)
+{
+ return make_float3(v.x/s, v.y/s, v.z/s);
+}
+
+inline Float3 divide_scalar_float3(Float s, Float3 v)
+{
+ return make_float3(s/v.x, s/v.y, s/v.z);
}
diff --git a/vector_math.h b/vector_math.h
t@@ -1,8 +1,18 @@
#include "typedefs.h"
+// constructor
Float3 make_float3(Float x, Float y, Float z);
+Float3 copy_float3(Float3 v);
+
+// vector-vector operations
Float3 add_float3(Float3 v1, Float3 v2);
Float3 subtract_float3(Float3 v1, Float3 v2);
Float3 multiply_float3(Float3 v1, Float3 v2);
Float3 divide_float3(Float3 v1, Float3 v2);
-Float3 copy_float3(Float3 v);
+
+// vector-scalar operations
+Float3 multiply_float3_scalar(Float3 v, Float s);
+Float3 divide_float3_scalar(Float3 v, Float s);
+Float3 divide_scalar_float3(Float s, Float3 v);
+Float3 add_float3_scalar(Float3 v, Float s)
+Float3 add_scalar_float3(Float s, Float3 v)
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.