From 20c000492fd45fa91762adad8e6cc322107c18ec Mon Sep 17 00:00:00 2001 From: Trammell Hudson Date: Sun, 3 May 2015 15:12:01 -0400 Subject: [PATCH] project 3d into 3d (broken?) --- stl_3d.c | 24 ++++++++++++++++++++++++ stl_3d.h | 6 ++++++ 2 files changed, 30 insertions(+) diff --git a/stl_3d.c b/stl_3d.c index ce94f9b..8bdda53 100644 --- a/stl_3d.c +++ b/stl_3d.c @@ -468,3 +468,27 @@ refframe_inset( *x_out = *y_out = 0; fprintf(stderr, "inset failed 2\n"); } + + +v3_t +refframe_project( + const refframe_t * const ref, + const v3_t p +) +{ + v3_t o = { 0, 0, 0 }; + o.p[0] = 0 + + ref->x.p[0] * p.p[0] + + ref->y.p[0] * p.p[1] + + ref->x.p[0] * p.p[2]; + o.p[1] = 0 + + ref->x.p[1] * p.p[0] + + ref->y.p[1] * p.p[1] + + ref->z.p[1] * p.p[2]; + o.p[2] = 0 + + ref->x.p[2] * p.p[0] + + ref->y.p[2] * p.p[1] + + ref->z.p[2] * p.p[2]; + + return o; +} diff --git a/stl_3d.h b/stl_3d.h index b6e47ef..b9a56fe 100644 --- a/stl_3d.h +++ b/stl_3d.h @@ -102,5 +102,11 @@ v3_project( double * const y_out ); +/** Project a point in a reference frame back into 3D */ +v3_t +refframe_project( + const refframe_t * const ref, + const v3_t p +); #endif