shape_doc 0.1
/Users/mourrain/Devel/mmx/shape/src/ssiqtsl.cpp File Reference
#include <cmath>
#include <fstream>
#include <shape/ssiqtsl.hpp>
#include <shape/ssiqts_tri_tri.hpp>
#include <shape/ssiqts_offsets.hpp>

Go to the source code of this file.

Namespaces

Defines

Functions


Define Documentation

#define __convert_order__ (   i,
  point 
)    { point[(i+1)%2] = 1.0-point[(i+1)%2]; }

Definition at line 42 of file ssiqtsl.cpp.

#define __down__   1

Definition at line 33 of file ssiqtsl.cpp.

Referenced by mmx::solve_cf().

#define __down__param_triangle__ (   q)    q[1],q[0],q[2]

Definition at line 41 of file ssiqtsl.cpp.

#define __down__triangle__ (   q)    q[0],q[1],q[2]

Definition at line 37 of file ssiqtsl.cpp.

#define __triangle_triangle_case__ (   trig0,
  trig1 
)
Value:
{                                                                          \
   intersection =                                                          \
        intersectp_triangles3_isegment                                     \
       ( coplanar, seg[0], seg[1],                                         \
         trig0##triangle__(qa),                                            \
   trig1##triangle__(qb), double(1e-9) );                            \
    if ( intersection )                                                \
    {                                                                      \
      if ( !coplanar )                                                     \
        {                                                                  \
          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)                             \
                   );                                                      \
          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 45 of file ssiqtsl.cpp.

Referenced by mmx::solve_cf().

#define __up__   0

Definition at line 32 of file ssiqtsl.cpp.

Referenced by mmx::solve_cf().

#define __up__param_triangle__ (   q)    q[3],q[2],q[0]

Definition at line 39 of file ssiqtsl.cpp.

#define __up__triangle__ (   q)    q[0],q[3],q[2]

Definition at line 35 of file ssiqtsl.cpp.

#define _ij_ (   i,
 
)    (i)*n+j
#define ParametricSurface   shape::surface_parametric<double>

Definition at line 5 of file ssiqtsl.cpp.