summaryrefslogtreecommitdiff
path: root/libs/pwyazh/v4f.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/pwyazh/v4f.h')
-rw-r--r--libs/pwyazh/v4f.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/libs/pwyazh/v4f.h b/libs/pwyazh/v4f.h
new file mode 100644
index 0000000..12cdb21
--- /dev/null
+++ b/libs/pwyazh/v4f.h
@@ -0,0 +1,66 @@
+#ifndef V4F_H
+#define V4F_H
+
+V4F
+v4f(F32 x, F32 y, F32 z, F32 w)
+{
+ V4F result = { x, y, z, w };
+ return(result);
+}
+
+V4F
+v4f_zero()
+{
+ V4F result = { 0.0f, 0.0f, 0.0f, 0.0f };
+ return(result);
+}
+
+V4F
+v4f_add(V4F a, V4F b)
+{
+ V4F result = { a.x+b.x, a.y+b.y, a.z+b.z, a.w+b.w };
+ return(result);
+}
+
+V4F
+v4f_sub(V4F a, V4F b)
+{
+ V4F result = { a.x-b.x, a.y-b.y, a.z-b.z, a.w-b.w };
+ return(result);
+}
+
+V4F
+v4f_scalef(V4F a, F32 scale)
+{
+ V4F result = { a.x*scale, a.y*scale, a.z*scale, a.w*scale };
+ return(result);
+}
+
+V4F
+v4f_scalev(V4F a, V4F scale)
+{
+ V4F result = { a.x*scale.x, a.y*scale.y, a.z*scale.z, a.w*scale.w };
+ return(result);
+}
+
+F32
+v4f_length2(V4F a)
+{
+ F32 result = a.x*a.x+a.y*a.y+a.z*a.z+a.w*a.w;
+ return(result);
+}
+
+F32
+v4f_length(V4F a)
+{
+ F32 result = f32_sqrt(v4f_length2(a));
+ return(result);
+}
+
+void
+v4f_print(V4F a)
+{
+ printf("[%4.4f\n%4.4f\n%4.4f\n%4.4f]\n\n", a.x, a.y, a.z, a.w);
+}
+
+#endif /* V4F_H */