Definition at line 51 of file ssi_def.hpp.
typedef unsigned short coord_t |
Definition at line 56 of file ssi_def.hpp.
typedef ordered_pair<dcurve*> cpair_t |
Definition at line 264 of file ssi_dsearch.hpp.
typedef std::map< dcurve*, links_t > curves_links_t |
Definition at line 263 of file ssi_dsearch.hpp.
Definition at line 53 of file ssi_def.hpp.
Definition at line 48 of file ssi_def.hpp.
Definition at line 262 of file ssi_dsearch.hpp.
Definition at line 84 of file ssi_dsearch.hpp.
Definition at line 85 of file ssi_dsearch.hpp.
typedef list2_t::iterator p2ref_t |
Definition at line 86 of file ssi_dsearch.hpp.
Definition at line 256 of file ssi_dsearch.hpp.
typedef std::priority_queue< assoc_t<pdpoint_t>,std::vector< assoc_t<pdpoint_t> >,assoc_t< pdpoint_t>::dist_cmp > pheap_t |
Definition at line 248 of file ssi_dsearch.hpp.
Definition at line 55 of file ssi_def.hpp.
Definition at line 54 of file ssi_def.hpp.
Definition at line 261 of file ssi_dsearch.hpp.
typedef pset_t::iterator pset_iterator |
Definition at line 283 of file ssi_dsearch.hpp.
Definition at line 253 of file ssi_dsearch.hpp.
typedef short rid_t |
Definition at line 57 of file ssi_def.hpp.
Definition at line 255 of file ssi_dsearch.hpp.
typedef std::priority_queue< assoc_t<sdpoint_t>,std::vector< assoc_t<sdpoint_t> >,assoc_t< sdpoint_t>::dist_cmp > sheap_t |
Definition at line 251 of file ssi_dsearch.hpp.
Definition at line 49 of file ssi_def.hpp.
Definition at line 50 of file ssi_def.hpp.
Definition at line 52 of file ssi_def.hpp.
void mmx::ssi::_link | ( | DPoint * | a, | |
DPoint * | b | |||
) | [inline] |
void append | ( | dcurve * | a, | |
dcurve * | b | |||
) |
Definition at line 68 of file ssi_dsearch_dcurve.cpp.
References dcurve::inter, dcurve::left, dcurve::owner, dcurve::right, and dcurve::size.
Referenced by _link().
void mmx::ssi::build_pheap | ( | pheap_t & | h, | |
pdpoint_t * | first, | |||
pdpoint_t * | last, | |||
double | prec | |||
) |
Definition at line 69 of file ssi_dsearch_build.cpp.
References search().
00070 { 00071 search(h,first,last,prec); 00072 };
void mmx::ssi::build_pset | ( | pset_t & | s, | |
pdpoint_t * | first, | |||
pdpoint_t * | last, | |||
double | prec | |||
) |
Definition at line 74 of file ssi_dsearch_build.cpp.
References search().
Referenced by reduce2().
00075 { 00076 search(s,first,last,prec); 00077 };
void build_sheap | ( | sheap_t & | h, | |
sdpoint_t * | first, | |||
sdpoint_t * | last, | |||
double | prec | |||
) |
Definition at line 79 of file ssi_dsearch_build.cpp.
References search().
Referenced by dsearch< C, V >::reduce().
00080 { 00081 search(h,first,last,prec); 00082 };
void mmx::ssi::container_add | ( | pset_t & | s, | |
const pdassc_t & | a | |||
) | [inline] |
Definition at line 268 of file ssi_dsearch.hpp.
void mmx::ssi::container_add | ( | A & | h, | |
const B & | a | |||
) | [inline] |
dcurve * curve | ( | sdpoint_t * | p | ) |
Definition at line 38 of file ssi_dsearch_dcurve.cpp.
References sdpoint_t::curve, and dcurve::owner.
dcurve * curve | ( | pdpoint_t * | p | ) |
Definition at line 29 of file ssi_dsearch_dcurve.cpp.
References pdpoint_t::curve, and dcurve::owner.
Referenced by _link(), curves(), isfirst(), islast(), isright(), link(), satisfy_links(), search(), solve_pheap(), solve_pset(), and solve_sheap().
cpair_t mmx::ssi::curves | ( | const pdassc_t & | ass | ) | [inline] |
Definition at line 269 of file ssi_dsearch.hpp.
References curve(), and assoc_t< DPoint >::pp.
Referenced by solve_pset().
double mmx::ssi::distance | ( | DP * | pa, | |
DP * | pb | |||
) | [inline] |
Definition at line 109 of file ssi_dsearch.hpp.
Referenced by search().
qnode<C,V>* mmx::ssi::down | ( | qnode< C, V > * | q | ) | [inline] |
Definition at line 51 of file ssi_qnode.hpp.
References search(), qnode< C, V >::umin, and qnode< C, V >::vmin.
Referenced by lsegment< C, V >::find_regions().
00051 { return search( q->umin - 1, q->vmin, q ); };
coord_t mmx::ssi::du | ( | const qnode< C, V > * | q | ) | [inline] |
Definition at line 33 of file ssi_qnode.hpp.
References qnode< C, V >::umax, and qnode< C, V >::umin.
Referenced by qnode< C, V >::convert(), qnode< C, V >::split(), and unit().
coord_t mmx::ssi::dv | ( | const qnode< C, V > * | q | ) | [inline] |
Definition at line 34 of file ssi_qnode.hpp.
References qnode< C, V >::vmax, and qnode< C, V >::vmin.
Referenced by qnode< C, V >::convert(), qnode< C, V >::split(), and unit().
bool mmx::ssi::empty | ( | dcurve * | c | ) | [inline] |
Definition at line 179 of file ssi_dsearch.hpp.
References dcurve::owner.
Referenced by dsearch< C, V >::reduce(), and reduce2().
void extremums | ( | pdpoint_t * | dst, | |
dcurve * | c | |||
) |
Definition at line 58 of file ssi_dsearch_dcurve.cpp.
References pdpoint_t::a, pdpoint_t::curve, dcurve::left, pdpoint_t::ref, and dcurve::right.
00059 { 00060 dst[0].curve = dst[1].curve = dst[2].curve = dst[3].curve = c; 00061 dst[0].a = &(dst[1]); dst[1].a = &(dst[0]); 00062 dst[0].ref = c->left.begin(); dst[1].ref = c->right.begin(); 00063 dst[2].a = &(dst[3]); dst[3].a = &(dst[2]); 00064 dst[2].ref = --(c->left.end()); dst[3].ref = --(c->right.end()); 00065 };
void extremums | ( | sdpoint_t * | dst, | |
dcurve * | src | |||
) |
Definition at line 48 of file ssi_dsearch_dcurve.cpp.
References sdpoint_t::curve, sdpoint_t::idl, sdpoint_t::idr, dcurve::left, and dcurve::right.
Referenced by dsearch< C, V >::reduce(), and reduce2().
void mmx::ssi::fill_quad_box | ( | vcode_t | c, | |
aabb3 & | box, | |||
const vector3 & | p0, | |||
const vector3 & | p1, | |||
const vector3 & | p2, | |||
const vector3 & | p3 | |||
) | [inline] |
bool mmx::ssi::inside | ( | coord_t | u, | |
coord_t | v, | |||
qnode< C, V > * | q | |||
) | [inline] |
Definition at line 41 of file ssi_qnode.hpp.
References qnode< C, V >::umax, qnode< C, V >::umin, qnode< C, V >::vmax, and qnode< C, V >::vmin.
Referenced by search().
bool mmx::ssi::isextrem | ( | sdpoint_t * | p | ) | [inline] |
bool mmx::ssi::isextrem | ( | pdpoint_t * | p | ) | [inline] |
Definition at line 193 of file ssi_dsearch.hpp.
References isfirst(), and islast().
Referenced by satisfy_links(), solve_pheap(), and solve_sheap().
bool mmx::ssi::isfirst | ( | pdpoint_t * | p | ) | [inline] |
Definition at line 190 of file ssi_dsearch.hpp.
References curve(), dcurve::left, pdpoint_t::ref, and dcurve::right.
bool mmx::ssi::isfirst | ( | sdpoint_t * | p | ) | [inline] |
Definition at line 187 of file ssi_dsearch.hpp.
References curve(), sdpoint_t::idl, and dcurve::left.
Referenced by _link(), isextrem(), and satisfy_links().
00187 { return curve(p)->left.begin() == p->idl; };
bool mmx::ssi::islast | ( | pdpoint_t * | p | ) | [inline] |
Definition at line 191 of file ssi_dsearch.hpp.
References curve(), left(), pdpoint_t::ref, and dcurve::right.
bool mmx::ssi::islast | ( | sdpoint_t * | p | ) | [inline] |
Definition at line 188 of file ssi_dsearch.hpp.
References curve(), sdpoint_t::idl, and left().
Referenced by _link(), isextrem(), and satisfy_links().
bool mmx::ssi::isright | ( | pdpoint_t * | p | ) | [inline] |
Definition at line 201 of file ssi_dsearch.hpp.
References curve(), pdpoint_t::ref, and dcurve::right.
Referenced by link().
bool mmx::ssi::leaf | ( | qnode< C, V > const *const | q | ) | [inline] |
Definition at line 39 of file ssi_qnode.hpp.
References qnode< C, V >::l.
Referenced by search(), dsearch< C, V >::search(), dsearch< C, V >::search_f(), and dsearch< C, V >::search_s().
qnode<C,V>* mmx::ssi::left | ( | qnode< C, V > * | q | ) | [inline] |
Definition at line 52 of file ssi_qnode.hpp.
References search(), qnode< C, V >::umin, and qnode< C, V >::vmin.
Referenced by islast(), voronoi2dimpl< C, V >::run(), voronoi2d< C, V >::run(), search(), semialgebraic2d< C, V >::subdivide(), mesher3d_shape< C, V >::subdivide(), mesher3d_algebraic_curve< C, V >::subdivide(), mesher2d< C, V >::subdivide(), cell3d_algebraic_surface< C, V >::subdivide(), bcell3d_algebraic_surface< C, V >::subdivide(), bcell3d_algebraic_curve< C, V >::subdivide(), arrangement2d< C, V >::subdivide(), and use< subdivision_def, C, default_env >::subdivide_node().
00052 { return search( q->umin, q->vmin - 1, q ); };
void link | ( | pdpoint_t * | a, | |
pdpoint_t * | b | |||
) |
void link | ( | sdpoint_t * | a, | |
sdpoint_t * | b | |||
) |
Definition at line 89 of file ssi_dsearch_dcurve.cpp.
References _link().
Referenced by satisfy_links(), solve_pheap(), and solve_sheap().
00089 { _link(a,b); };
pdknode * make | ( | pdpoint_t ** | first, | |
pdpoint_t ** | last, | |||
const dim_cmp< pdpoint_t > & | f | |||
) |
Definition at line 129 of file ssi_dsearch_build.cpp.
References make(), and dim_cmp< DPoint >::next().
00130 { 00131 if ( last-first >= 1 ) { 00132 if ( last-first > 1 ) { 00133 unsigned m = (last-first)>>1; 00134 std::nth_element(first, first+m,last,f); 00135 return new pdknode( *(first+m), 00136 make( first, first + m, f.next()), 00137 make( first+m+1, last, f.next()) ); } 00138 else { return new pdknode(*first,0,0); };}; 00139 return 0; 00140 };
sdknode * make | ( | sdpoint_t * | first, | |
sdpoint_t * | last, | |||
const dim_cmp< sdpoint_t > & | f | |||
) |
Definition at line 116 of file ssi_dsearch_build.cpp.
References dim_cmp< DPoint >::next().
Referenced by make(), and search().
00117 { 00118 if ( last-first >= 1 ) { 00119 if ( last-first > 1 ) { 00120 unsigned m = (last-first)>>1; 00121 std::nth_element(first, first+m,last,f); 00122 return new sdknode( first+m, 00123 make( first, first + m, f.next()), 00124 make( first+m+1, last, f.next()) ); } 00125 else { return new sdknode(first,0,0); };}; 00126 return 0; 00127 };
std::ostream& mmx::ssi::operator<< | ( | std::ostream & | o, | |
const lrnode< C, V > & | l | |||
) | [inline] |
Definition at line 26 of file ssi_qsegment.hpp.
std::ostream & operator<< | ( | std::ostream & | o, | |
const qnode< C, V > & | q | |||
) | [inline] |
Definition at line 56 of file ssi_qnode.hpp.
void prepend | ( | dcurve * | a, | |
dcurve * | b | |||
) |
Definition at line 77 of file ssi_dsearch_dcurve.cpp.
References dcurve::inter, dcurve::left, dcurve::owner, dcurve::right, and dcurve::size.
Referenced by _link().
void mmx::ssi::print | ( | std::ostream & | o, | |
typename qsegment< C, V >::qtree | q | |||
) | [inline] |
Definition at line 147 of file ssi_qsegment.hpp.
References qnode< C, V >::l, and qnode< C, V >::r.
std::list< dcurve * > * reduce2 | ( | std::vector< dcurve * > * | conflicts | ) |
Definition at line 172 of file ssi_dsearch_build.cpp.
References build_pset(), empty(), extremums(), satisfy_links(), and solve_pset().
Referenced by dsearch< C, V >::dsearch().
00173 { 00174 if ( conflicts->size() == 0 ) return 0; 00175 unsigned i; 00176 unsigned endsize = 4*conflicts->size(); 00177 pdpoint_t * ends = new pdpoint_t[endsize]; 00178 unsigned c = 0; 00179 for ( i = 0; i < conflicts->size(); i++ ) 00180 { 00181 extremums( ends + c, (*conflicts)[i] ); 00182 c+= 4; 00183 }; 00184 00185 pset_t s; 00186 build_pset(s,ends, ends + endsize, 0.01 ); 00187 00188 curves_links_t links; 00189 solve_pset(links,s); 00190 00191 00192 for ( curves_links_t::iterator it = links.begin(); 00193 it != links.end(); it++ ) 00194 satisfy_links( it ); 00195 00196 delete[] ends; 00197 00198 std::list< dcurve* > * result = new std::list< dcurve * >(); 00199 00200 for ( i = 0; i < conflicts->size() ; i++ ) 00201 { 00202 if ( empty((*conflicts)[i]) ) delete (*conflicts)[i]; 00203 else result->push_front( (*conflicts)[i] ); 00204 }; 00205 00206 return result; 00207 };
void reverse | ( | dcurve * | c | ) |
Definition at line 86 of file ssi_dsearch_dcurve.cpp.
References dcurve::inter, dcurve::left, and dcurve::right.
Referenced by _link().
qnode<C,V>* mmx::ssi::right | ( | qnode< C, V > * | q | ) | [inline] |
Definition at line 53 of file ssi_qnode.hpp.
References search(), qnode< C, V >::umin, and qnode< C, V >::vmin.
Referenced by lrnode< C, V >::make(), voronoi2dimpl< C, V >::run(), voronoi2d< C, V >::run(), search(), semialgebraic2d< C, V >::subdivide(), mesher3d_shape< C, V >::subdivide(), mesher3d_algebraic_curve< C, V >::subdivide(), mesher2d< C, V >::subdivide(), cell3d_algebraic_surface< C, V >::subdivide(), bcell3d_algebraic_surface< C, V >::subdivide(), bcell3d_algebraic_curve< C, V >::subdivide(), arrangement2d< C, V >::subdivide(), and use< subdivision_def, C, default_env >::subdivide_node().
00053 { return search( q->umin, q->vmin + 1, q ); };
void satisfy_links | ( | curves_links_t::iterator | it | ) |
Definition at line 98 of file ssi_dsearch_dcurve.cpp.
References curve(), isextrem(), isfirst(), islast(), and link().
Referenced by reduce2().
00099 { 00100 std::list< ppair_t > * l = &(it->second); 00101 std::vector< ppair_t > starts; 00102 std::vector< ppair_t > ends; 00103 00104 starts.reserve(10); 00105 ends.reserve(10); 00106 00107 for ( std::list< ppair_t >::iterator p = l->begin(); 00108 p != l->end(); p ++ ) 00109 { 00110 if ( isfirst(p->first) ) starts.push_back( *p ); 00111 else if ( islast(p->first) ) ends.push_back( *p ); 00112 }; 00113 00114 if ( starts.size() == 1 ) 00115 { 00116 if ( isextrem( starts[0].first ) && isextrem( starts[0].second ) ) 00117 if ( curve(starts[0].first) != curve(starts[0].second)) 00118 link( starts[0].first, starts[0].second ); 00119 }; 00120 00121 if ( ends.size() == 1 ) 00122 { 00123 00124 if ( isextrem( ends[0].first ) && isextrem( ends[0].second ) ) 00125 if ( curve(ends[0].first) != curve(ends[0].second) ) 00126 link( ends[0].first, ends[0].second ); 00127 }; 00128 };
void scale | ( | vector3 * | p, | |
double | s | |||
) |
Definition at line 19 of file ssi_qsegment.cpp.
void mmx::ssi::search | ( | Container & | c, | |
pdknode * | curr, | |||
pdpoint_t *const | query, | |||
unsigned | dim, | |||
double | eps | |||
) | [inline] |
Definition at line 52 of file ssi_dsearch_build.cpp.
References container_add(), curve(), pdknode::data, distance(), pdknode::l, left(), pdknode::r, right(), and search().
00053 { 00054 if (! curr ) return; 00055 00056 bool left = (*query)[dim]-eps<(*(curr->data))[dim]; 00057 bool right = (*query)[dim]+eps>(*(curr->data))[dim]; 00058 if ( (left && right) && (query<curr->data) && (curve(query) != curve(curr->data)) ) 00059 { 00060 double d = distance(curr->data,query); 00061 if ( (d<eps) ) 00062 container_add(c,assoc_t<pdpoint_t>(query,curr->data,d)); 00063 }; 00064 if ( left ){ search( c, curr->l, query, (dim+1)%4, eps ); }; 00065 if ( right ){ search( c, curr->r, query, (dim+1)%4, eps ); }; 00066 };
void mmx::ssi::search | ( | Container & | c, | |
sdknode * | curr, | |||
sdpoint_t *const | query, | |||
unsigned | dim, | |||
double | eps | |||
) | [inline] |
Definition at line 34 of file ssi_dsearch_build.cpp.
References container_add(), curve(), sdknode::data, distance(), sdknode::l, left(), sdknode::r, right(), and search().
00035 { 00036 if (! curr ) return; 00037 00038 bool left = (*query)[dim]-eps<(*(curr->data))[dim]; 00039 bool right = (*query)[dim]+eps>(*(curr->data))[dim]; 00040 00041 if ( (left && right) && (query<curr->data) && (curve(query) != curve(curr->data)) ) 00042 { 00043 double d = distance(curr->data,query); 00044 if ( (d<eps) ) 00045 container_add(c,assoc_t<sdpoint_t>(query,curr->data,d)); 00046 }; 00047 if ( left ){ search( c, curr->l, query, (dim+1)%4, eps ); }; 00048 if ( right ){ search( c, curr->r, query, (dim+1)%4, eps ); }; 00049 };
void mmx::ssi::search | ( | Container & | c, | |
pdpoint_t * | first, | |||
pdpoint_t * | last, | |||
double | epsilonn | |||
) | [inline] |
Definition at line 19 of file ssi_dsearch_build.cpp.
References make(), and search().
00020 { 00021 pdknode* root; 00022 pdpoint_t ** tmp = new pdpoint_t*[last-first]; 00023 int i; 00024 for ( i = 0; i < last-first; i++ ) 00025 tmp[i] = first + i; 00026 root = make(tmp,tmp + (last-first),dim_cmp<pdpoint_t>()); 00027 delete[] tmp; 00028 for ( pdpoint_t * p = first; p < last; p++ ) 00029 search(c,root,p,0,epsilonn); 00030 delete root; 00031 };
void mmx::ssi::search | ( | Container & | c, | |
sdpoint_t * | first, | |||
sdpoint_t * | last, | |||
double | epsilonn | |||
) | [inline] |
qnode< C, V > * search | ( | coord_t | u, | |
coord_t | v, | |||
qnode< C, V > * | start | |||
) | [inline] |
Definition at line 155 of file ssi_qnode.hpp.
References qnode< C, V >::father, inside(), qnode< C, V >::l, leaf(), and qnode< C, V >::r.
Referenced by build_pheap(), build_pset(), build_sheap(), down(), left(), right(), search(), and up().
00156 { 00157 qnode<C,V> * tmp = start; 00158 do { tmp=tmp->father; } while(tmp && !inside(u,v,tmp) ); 00159 if ( !tmp ) return 0; 00160 while(1){ 00161 if ( leaf(tmp) ) return tmp; 00162 if ( inside(u,v,tmp->l) ) { tmp = tmp->l; continue; }; 00163 if ( inside(u,v,tmp->r) ) { tmp = tmp->r; continue; }; 00164 return 0; 00165 }; 00166 };
void shiftm | ( | vector3 * | v, | |
unsigned | sz, | |||
const aabb3 & | box | |||
) |
Definition at line 11 of file ssi_qsegment.cpp.
00012 { 00013 // double m,M; 00014 for ( vector3 * src = v; src != v+sz; src ++ ) 00015 for ( int i = 0; i < 3; (*src)[i] -= box[i].m, i ++ ); 00016 };
pdpoint_t* mmx::ssi::sibble | ( | pdpoint_t * | p | ) | [inline] |
pdassc_t mmx::ssi::sibbles | ( | const pdassc_t & | ass | ) | [inline] |
Definition at line 270 of file ssi_dsearch.hpp.
References assoc_t< DPoint >::pp, and sibble().
Referenced by solve_pset().
void solve_pheap | ( | pheap_t & | h | ) |
Definition at line 85 of file ssi_dsearch_build.cpp.
References curve(), isextrem(), link(), and assoc_t< DPoint >::pp.
void solve_pset | ( | curves_links_t & | links, | |
pset_t & | s | |||
) |
Definition at line 143 of file ssi_dsearch_build.cpp.
References curve(), curves(), sibbles(), and swap().
Referenced by reduce2().
00144 { 00145 while ( !s.empty() ) 00146 { 00147 pdassc_t ass(sibbles(*(s.begin()))); 00148 pset_iterator it; 00149 it = s.find( ass ); 00150 if( it != s.end() ) 00151 { 00152 s.erase(s.find(ass)); 00153 cpair_t tmp (curves(*(s.begin()))); 00154 ppair_t p = (s.begin())->pp; 00155 if ( curve(p.first) != tmp.first ) 00156 { 00157 links[tmp.second].push_front(p); 00158 std::swap(p.first,p.second); 00159 links[tmp.first].push_front(p); 00160 } 00161 else 00162 { 00163 links[tmp.first].push_front(p); 00164 std::swap(p.first,p.second); 00165 links[tmp.second].push_front(p); 00166 }; 00167 }; 00168 s.erase(s.begin()); 00169 }; 00170 };
void solve_sheap | ( | sheap_t & | h | ) |
Definition at line 101 of file ssi_dsearch_build.cpp.
References curve(), isextrem(), link(), and assoc_t< DPoint >::pp.
Referenced by dsearch< C, V >::reduce().
00102 { 00103 // dcurve * dummy_curve = new dcurve( point2(), point2(), point2(), point2(), 00104 // point3(), point3() ); 00105 while( !h.empty() ) 00106 { 00107 sdassc_t a = h.top(); 00108 // cout << a.d << endl; 00109 if (( isextrem(a.pp.first) && isextrem(a.pp.second) ) && 00110 ( curve(a.pp.first) != curve(a.pp.second) )) 00111 link(a.pp.first,a.pp.second); 00112 h.pop(); 00113 }; 00114 };
void space2prm | ( | vector2 & | pa, | |
vector2 & | pb, | |||
const vector3 & | sa, | |||
const vector3 & | sb, | |||
const vector3 & | base, | |||
const vector3 & | pu, | |||
const vector3 & | pv | |||
) |
Definition at line 74 of file ssi_dsearch_triangle.cpp.
00081 { 00082 /* T(u,v) = base + u*bu +v*bv 00083 => 00084 spc[0] - base[0] = delta[0] = / bu[0] bv[0]\ / u \ 00085 spc[1] - base[1] = delta[1] = | bu[1] bv[1]| | | 00086 spc[2] - base[2] = delta[2] = \ bu[2] bv[2]/ \ v / 00087 */ 00088 vector3 bu; 00089 for ( int i = 0; i < 3; i ++ ) bu[i] = pu[i]-base[i]; 00090 vector3 bv; 00091 for ( int i = 0; i < 3; i ++ ) bv[i] = pv[i]-base[i]; 00092 double muu, mvv, muv; 00093 muu = 0; 00094 for ( int i = 0; i < 3; i ++ ) muu += bu[i]*bu[i]; 00095 mvv = 0; 00096 for ( int i = 0; i < 3; i ++ ) mvv += bv[i]*bv[i]; 00097 muv = 0; 00098 for ( int i = 0; i < 3; i ++ ) muv += bu[i]*bv[i]; 00099 double detm = muu*mvv - muv*muv; 00100 vector3 delta; 00101 double x, y; 00102 for ( int k = 0; k < 3; k ++ ) delta[k] = sa[k]-base[k]; 00103 x = 0; 00104 for ( int k = 0; k < 3; k ++ ) x += bu[k]*delta[k]; 00105 y = 0; 00106 for ( int k = 0; k < 3; k ++ ) y += bv[k]*delta[k]; 00107 pa[0] = (mvv * x - muv * y)/detm; 00108 pa[1] = (muu * y - muv * x)/detm; 00109 for ( int k = 0; k < 3; k ++ ) delta[k] = sb[k]-base[k]; 00110 x = 0; 00111 for ( int k = 0; k < 3; k ++ ) x += bu[k]*delta[k]; 00112 y = 0; 00113 for ( int k = 0; k < 3; k ++ ) y += bv[k]*delta[k]; 00114 pb[0] = (mvv * x - muv * y)/detm; 00115 pb[1] = (muu * y - muv * x)/detm; 00116 };
void mmx::ssi::swap | ( | dcurve * | c | ) | [inline] |
Definition at line 199 of file ssi_dsearch.hpp.
References dcurve::left, and dcurve::right.
Referenced by link(), and solve_pset().
coord_t mmx::ssi::umax | ( | const qnode< C, V > * | q | ) | [inline] |
Definition at line 36 of file ssi_qnode.hpp.
References qnode< C, V >::umax.
Referenced by mmx::shape::as_graphic(), and qsegment< C, V >::qsegment().
coord_t mmx::ssi::umin | ( | const qnode< C, V > * | q | ) | [inline] |
Definition at line 35 of file ssi_qnode.hpp.
References qnode< C, V >::umin.
Referenced by mmx::shape::as_graphic(), and qsegment< C, V >::qsegment().
bool mmx::ssi::unit | ( | const qnode< C, V > * | q | ) | [inline] |
qnode<C,V>* mmx::ssi::up | ( | qnode< C, V > * | q | ) | [inline] |
Definition at line 50 of file ssi_qnode.hpp.
References search(), qnode< C, V >::umin, and qnode< C, V >::vmin.
Referenced by solver_implicit< C, V >::common_edge_point(), solver_implicit< C, V >::edge_point(), and lsegment< C, V >::find_regions().
00050 { return search( q->umin + 1, q->vmin, q ); };
coord_t mmx::ssi::vmax | ( | const qnode< C, V > * | q | ) | [inline] |
Definition at line 38 of file ssi_qnode.hpp.
References qnode< C, V >::vmax.
coord_t mmx::ssi::vmin | ( | const qnode< C, V > * | q | ) | [inline] |
Definition at line 37 of file ssi_qnode.hpp.
References qnode< C, V >::vmin.
const int dw_triangle_[] = { 2, 3, 1 } [static] |
Definition at line 11 of file ssi_dsearch_triangle.cpp.
const int up_triangle_[] = { 0, 1, 3 } [static] |
Definition at line 10 of file ssi_dsearch_triangle.cpp.