#include <cmath>
#include <vector>
#include <fstream>
#include <shape/ssi/ssi_def.hpp>
#include <shape/ssi/ssiqts.hpp>
#include <shape/ssi/ssiqts_tri_tri.hpp>
Go to the source code of this file.
#define __convert_order__ | ( | i, | |||
point | ) | { point[(i+1)%2] = 1.0-point[(i+1)%2]; } |
Definition at line 81 of file ssiqtsl.hpp.
#define __down__ 1 |
Definition at line 72 of file ssiqtsl.hpp.
#define __down__param_triangle__ | ( | q | ) | q[1],q[0],q[2] |
Definition at line 80 of file ssiqtsl.hpp.
#define __down__triangle__ | ( | q | ) | q[0],q[1],q[2] |
Definition at line 76 of file ssiqtsl.hpp.
#define __ssiqtsl__triangle_triangle_case__ | ( | trig0, | |||
trig1 | ) |
{ \ intersection = \ intersectp_triangles3_isegment \ ( coplanar, seg[0], seg[1], \ trig0##triangle__(qa), \ trig1##triangle__(qb), double(1e-9) ); \ if ( intersection ) \ { \ if ( !coplanar ) \ { \ SSIQTSL::space2prm(/* points in parameter space */ \ seg0[0], seg0[1], \ /* corresponding points in R3 */ \ seg[0], seg[1], \ /* parametric plane = base + 2 vectors */ \ trig0##param_triangle__(qa) \ ); \ SSIQTSL::space2prm( seg1[0], seg1[1], \ seg[0], seg[1], \ trig1##param_triangle__(qb) ); \ /* retrieve the correct offset coordinates in quad */ \ __convert_order__(trig0,seg0[0]); \ __convert_order__(trig0,seg0[1]); \ __convert_order__(trig1,seg1[0]); \ __convert_order__(trig1,seg1[1]); \ \ double * left_uvals = ssi.smpa->m_uvals; \ double * left_vvals = ssi.smpa->m_vvals; \ double * righ_uvals = ssi.smpb->m_uvals; \ double * righ_vvals = ssi.smpb->m_vvals; \ for ( int i = 0; i < 2; i ++ ) \ { \ seg0[i][0] = left_uvals[a/ssi.m] + seg0[i][0] * (left_uvals[a/ssi.m+1]-left_uvals[a/ssi.m]);\ seg0[i][1] = left_vvals[a%ssi.m] + seg0[i][1] * (left_vvals[a%ssi.m+1]-left_vvals[a%ssi.m]);\ }; \ for ( int i = 0; i < 2; i ++ ) \ { \ seg1[i][0] = righ_uvals[b/ssi.m] + seg1[i][0] * (righ_uvals[b/ssi.m+1]-righ_uvals[b/ssi.m]);\ seg1[i][1] = righ_vvals[b%ssi.m] + seg1[i][1] * (righ_vvals[b%ssi.m+1]-righ_vvals[b%ssi.m]);\ }; \ ssi.lpts.push_back(seg0[0]); \ ssi.lpts.push_back(seg0[1]); \ ssi.rpts.push_back(seg1[0]); \ ssi.rpts.push_back(seg1[1]); \ } \ } \ }
Definition at line 84 of file ssiqtsl.hpp.
Referenced by ssiqtsl< C, V >::solve_cf().
#define __up__ 0 |
Definition at line 71 of file ssiqtsl.hpp.
#define __up__param_triangle__ | ( | q | ) | q[3],q[2],q[0] |
Definition at line 78 of file ssiqtsl.hpp.
#define __up__triangle__ | ( | q | ) | q[0],q[3],q[2] |
Definition at line 74 of file ssiqtsl.hpp.
#define _ij_ | ( | i, | |||
j | ) | (i)*n+j |
#define SSIQTS ssiqts<C,V> |
Definition at line 10 of file ssiqtsl.hpp.
#define SSIQTSL ssiqtsl<C,V> |
Definition at line 11 of file ssiqtsl.hpp.
#define TMPL template<class C, class V> |
Definition at line 12 of file ssiqtsl.hpp.