aboutsummaryrefslogtreecommitdiff
path: root/src/vector.c
diff options
context:
space:
mode:
authortlatorre <tlatorre@uchicago.edu>2018-08-14 10:08:27 -0500
committertlatorre <tlatorre@uchicago.edu>2018-08-14 10:08:27 -0500
commit24c8bcfe7f76b20124e2862ea050f815c0f768e7 (patch)
treee5bdbd638a2c7f38f1c094cc9e95cbdfe05b9481 /src/vector.c
parent0b7f199c0d93074484ea580504485a32dc29f5e2 (diff)
downloadsddm-24c8bcfe7f76b20124e2862ea050f815c0f768e7.tar.gz
sddm-24c8bcfe7f76b20124e2862ea050f815c0f768e7.tar.bz2
sddm-24c8bcfe7f76b20124e2862ea050f815c0f768e7.zip
move everything to src directory
Diffstat (limited to 'src/vector.c')
-rw-r--r--src/vector.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/vector.c b/src/vector.c
new file mode 100644
index 0000000..d0e304a
--- /dev/null
+++ b/src/vector.c
@@ -0,0 +1,26 @@
+#include "vector.h"
+#include <math.h>
+
+void normalize(double *a)
+{
+ double c;
+ c = NORM(a);
+ DIV(a,c);
+}
+
+void rotate(double *dest, double *v, double *n, double phi)
+{
+ /* Rotate the vector `v` through an angle `phi` about the axis `n`. */
+ double temp[3], cos_theta;
+
+ cos_theta = cos(phi);
+
+ COPY(dest,v);
+ MUL(dest,cos_theta);
+ CROSS(temp,n,v);
+ MUL(temp,sin(phi));
+ ADD(dest,dest,temp);
+ COPY(temp,n);
+ MUL(temp,DOT(n,v)*(1-cos_theta));
+ ADD(dest,dest,temp);
+}