aboutsummaryrefslogtreecommitdiff
path: root/vendor/libftm/src/vec
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-05-11 13:29:51 +0200
committerCharles <sircharlesaze@gmail.com>2020-05-11 13:29:51 +0200
commitd07d87964f13d3c1e6ad8c2f6d7db21101f1ef34 (patch)
tree52dd2e82580eb3c70201991b53a2a2b4c434908b /vendor/libftm/src/vec
parent0700a8f567ab733a57fe688e45e5092d3fa1c1a0 (diff)
downloadscop-d07d87964f13d3c1e6ad8c2f6d7db21101f1ef34.tar.gz
scop-d07d87964f13d3c1e6ad8c2f6d7db21101f1ef34.tar.bz2
scop-d07d87964f13d3c1e6ad8c2f6d7db21101f1ef34.zip
libftm matrix, dynamic vector instead of fixed size
Diffstat (limited to 'vendor/libftm/src/vec')
-rw-r--r--vendor/libftm/src/vec/ftm_vecadd.c28
-rw-r--r--vendor/libftm/src/vec/ftm_veccross.c33
-rw-r--r--vendor/libftm/src/vec/ftm_vecdestroy.c19
-rw-r--r--vendor/libftm/src/vec/ftm_vecdot.c30
-rw-r--r--vendor/libftm/src/vec/ftm_vecnew.c28
-rw-r--r--vendor/libftm/src/vec/ftm_vecscale.c26
-rw-r--r--vendor/libftm/src/vec/ftm_vecsub.c28
7 files changed, 192 insertions, 0 deletions
diff --git a/vendor/libftm/src/vec/ftm_vecadd.c b/vendor/libftm/src/vec/ftm_vecadd.c
new file mode 100644
index 0000000..e776d21
--- /dev/null
+++ b/vendor/libftm/src/vec/ftm_vecadd.c
@@ -0,0 +1,28 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ftm_vecadd.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/05/11 12:39:47 by charles #+# #+# */
+/* Updated: 2020/05/11 12:39:49 by charles ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "libftm_vec.h"
+
+t_ftmvec *ftm_vecadd(t_ftmvec *dst, t_ftmvec *other)
+{
+ size_t i;
+
+ if (dst->size != other->size)
+ return (NULL);
+ i = 0;
+ while (i < dst->size)
+ {
+ dst->v[i] += other->v[i];
+ i++;
+ }
+ return (dst);
+}
diff --git a/vendor/libftm/src/vec/ftm_veccross.c b/vendor/libftm/src/vec/ftm_veccross.c
new file mode 100644
index 0000000..48dda5f
--- /dev/null
+++ b/vendor/libftm/src/vec/ftm_veccross.c
@@ -0,0 +1,33 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ftm_veccross.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/05/09 21:20:41 by charles #+# #+# */
+/* Updated: 2020/05/11 12:43:33 by charles ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "libftm_vec.h"
+
+/*
+** s1 = a2 * b - a * b2
+** s2 = a * b1 - a1 * b
+** s = a1 * b2 - a2 * b1
+*/
+
+t_ftmvec *ftm_veccross(t_ftmvec *a, t_ftmvec *b)
+{
+ t_ftmvec *dst;
+
+ if (a->size != 3 || b->size != 3)
+ return (NULL);
+ if ((dst = ftm_vecnew(3)) == NULL)
+ return (NULL);
+ dst->v[0] = a->v[1] * b->v[2] - a->v[2] * b->v[1];
+ dst->v[1] = a->v[2] * b->v[0] - a->v[0] * b->v[2];
+ dst->v[2] = a->v[0] * b->v[1] - a->v[1] * b->v[0];
+ return (dst);
+}
diff --git a/vendor/libftm/src/vec/ftm_vecdestroy.c b/vendor/libftm/src/vec/ftm_vecdestroy.c
new file mode 100644
index 0000000..38caf23
--- /dev/null
+++ b/vendor/libftm/src/vec/ftm_vecdestroy.c
@@ -0,0 +1,19 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ftm_vecdestroy.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/05/11 12:46:01 by charles #+# #+# */
+/* Updated: 2020/05/11 12:49:39 by charles ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "libftm_vec.h"
+
+void ftm_vecdestroy(t_ftmvec *vec)
+{
+ free(vec->v);
+ free(vec);
+}
diff --git a/vendor/libftm/src/vec/ftm_vecdot.c b/vendor/libftm/src/vec/ftm_vecdot.c
new file mode 100644
index 0000000..c2f03f0
--- /dev/null
+++ b/vendor/libftm/src/vec/ftm_vecdot.c
@@ -0,0 +1,30 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ftm_vecdot.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/05/09 21:06:09 by charles #+# #+# */
+/* Updated: 2020/05/11 12:48:12 by charles ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "libftm_vec.h"
+
+float ftm_vecdot(t_ftmvec *a, t_ftmvec *b)
+{
+ size_t i;
+ float total;
+
+ if (a->size != b->size)
+ return (0.0);
+ total = 0.0;
+ i = 0;
+ while (i < a->size)
+ {
+ total += a->v[i] * b->v[i];
+ i++;
+ }
+ return (total);
+}
diff --git a/vendor/libftm/src/vec/ftm_vecnew.c b/vendor/libftm/src/vec/ftm_vecnew.c
new file mode 100644
index 0000000..422b01d
--- /dev/null
+++ b/vendor/libftm/src/vec/ftm_vecnew.c
@@ -0,0 +1,28 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ftm_vecnew.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/05/11 12:44:38 by charles #+# #+# */
+/* Updated: 2020/05/11 12:49:30 by charles ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "libftm_vec.h"
+
+t_ftmvec *ftm_vecnew(size_t size)
+{
+ t_ftmvec *dst;
+
+ if ((dst = malloc(sizeof(t_ftmvec))) == NULL)
+ return (NULL);
+ if ((dst->v = malloc(sizeof(float) * size)) == NULL)
+ {
+ free(dst);
+ return (NULL);
+ }
+ dst->size = size;
+ return (dst);
+}
diff --git a/vendor/libftm/src/vec/ftm_vecscale.c b/vendor/libftm/src/vec/ftm_vecscale.c
new file mode 100644
index 0000000..508a245
--- /dev/null
+++ b/vendor/libftm/src/vec/ftm_vecscale.c
@@ -0,0 +1,26 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ftm_vecscale.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/05/11 12:41:11 by charles #+# #+# */
+/* Updated: 2020/05/11 12:48:43 by charles ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "libftm_vec.h"
+
+t_ftmvec *ftm_vecscale(t_ftmvec *dst, float scalar)
+{
+ size_t i;
+
+ i = 0;
+ while (i < dst->size)
+ {
+ dst->v[i] *= scalar;
+ i++;
+ }
+ return (dst);
+}
diff --git a/vendor/libftm/src/vec/ftm_vecsub.c b/vendor/libftm/src/vec/ftm_vecsub.c
new file mode 100644
index 0000000..0ac8ae1
--- /dev/null
+++ b/vendor/libftm/src/vec/ftm_vecsub.c
@@ -0,0 +1,28 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ftm_vecsub.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/05/11 12:39:42 by charles #+# #+# */
+/* Updated: 2020/05/11 12:49:58 by charles ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "libftm_vec.h"
+
+t_ftmvec *ftm_vecsub(t_ftmvec *dst, t_ftmvec *other)
+{
+ size_t i;
+
+ if (dst->size != other->size)
+ return (NULL);
+ i = 0;
+ while (i < dst->size)
+ {
+ dst->v[i] -= other->v[i];
+ i++;
+ }
+ return (dst);
+}