- Timestamp:
- 06/20/06 13:28:51 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/Lib/Geom/shared/GTGeometry/src/libs/quadrics.cxx
r774 r1025 1 1 // $Id: quadrics.cxx,v 1.5 1997/10/01 14:07:28 garland Exp $ 2 2 3 #include " qslim.h"3 #include "simplif.h" 4 4 #include "quadrics.h" 5 5 … … 16 16 // 17 17 18 using namespace qslim;19 20 Mat4 qslim::quadrix_vertex_constraint(const Vec3& v)18 using namespace simplif; 19 20 Mat4 simplif::quadrix_vertex_constraint(const Vec3& v) 21 21 { 22 22 Mat4 L(Mat4::identity); … … 39 39 // quadric" discussed in the paper. 40 40 // 41 Mat4 qslim::quadrix_plane_constraint(real a, real b, real c, real d)41 Mat4 simplif::quadrix_plane_constraint(real a, real b, real c, real d) 42 42 { 43 43 Mat4 K(Mat4::zero); … … 54 54 // Define some other convenient ways for constructing these plane quadrics. 55 55 // 56 Mat4 qslim::quadrix_plane_constraint(const Vec3& n, real d)57 { 58 return qslim::quadrix_plane_constraint(n[X], n[Y], n[Z], d);59 } 60 61 Mat4 qslim::quadrix_plane_constraint(Face& T)56 Mat4 simplif::quadrix_plane_constraint(const Vec3& n, real d) 57 { 58 return simplif::quadrix_plane_constraint(n[X], n[Y], n[Z], d); 59 } 60 61 Mat4 simplif::quadrix_plane_constraint(Face& T) 62 62 { 63 63 const Plane& p = T.plane(); … … 65 65 p.coeffs(&a, &b, &c, &d); 66 66 67 return qslim::quadrix_plane_constraint(a, b, c, d);68 } 69 70 qslim::Mat4 qslim::quadrix_plane_constraint(const qslim::Vec3& v1, const qslim::Vec3& v2, const qslim::Vec3& v3)67 return simplif::quadrix_plane_constraint(a, b, c, d); 68 } 69 70 simplif::Mat4 simplif::quadrix_plane_constraint(const simplif::Vec3& v1, const simplif::Vec3& v2, const simplif::Vec3& v3) 71 71 { 72 72 Plane P(v1,v2,v3); … … 74 74 P.coeffs(&a, &b, &c, &d); 75 75 76 return qslim::quadrix_plane_constraint(a, b, c, d);77 } 78 79 real qslim::quadrix_evaluate_vertex(const Vec3& v, const Mat4& K)76 return simplif::quadrix_plane_constraint(a, b, c, d); 77 } 78 79 real simplif::quadrix_evaluate_vertex(const Vec3& v, const Mat4& K) 80 80 { 81 81 real x=v[X], y=v[Y], z=v[Z]; … … 113 113 } 114 114 115 bool qslim::check_for_discontinuity(Edge *e)115 bool simplif::check_for_discontinuity(Edge *e) 116 116 { 117 117 return is_border(e); 118 118 } 119 119 120 Mat4 qslim::quadrix_discontinuity_constraint(Edge *edge, const Vec3& n)120 Mat4 simplif::quadrix_discontinuity_constraint(Edge *edge, const Vec3& n) 121 121 { 122 122 Vec3& org = *edge->org(); … … 128 128 129 129 real d = -n2 * org; 130 return qslim::quadrix_plane_constraint(n2, d);131 } 132 133 134 Mat4 qslim::quadrix_discontinuity_constraint(Edge *edge)130 return simplif::quadrix_plane_constraint(n2, d); 131 } 132 133 134 Mat4 simplif::quadrix_discontinuity_constraint(Edge *edge) 135 135 { 136 136 Mat4 D(Mat4::zero); … … 139 139 140 140 for(int i=0; i<faces.length(); i++) 141 D += qslim::quadrix_discontinuity_constraint(edge,faces(i)->plane().normal());141 D += simplif::quadrix_discontinuity_constraint(edge,faces(i)->plane().normal()); 142 142 143 143 return D; … … 150 150 // 151 151 152 bool qslim::quadrix_find_local_fit(const Mat4& K,152 bool simplif::quadrix_find_local_fit(const Mat4& K, 153 153 const Vec3& v1, const Vec3& v2, 154 154 Vec3& candidate) … … 159 159 bool try_midpoint = placement_policy > PLACE_ENDPOINTS; 160 160 161 real c1 = qslim::quadrix_evaluate_vertex(v1, K);162 real c2 = qslim::quadrix_evaluate_vertex(v2, K);161 real c1 = simplif::quadrix_evaluate_vertex(v1, K); 162 real c2 = simplif::quadrix_evaluate_vertex(v2, K); 163 163 real c3; 164 if( try_midpoint ) c3 = qslim::quadrix_evaluate_vertex(v3, K);164 if( try_midpoint ) c3 = simplif::quadrix_evaluate_vertex(v3, K); 165 165 166 166 if( c1<c2 ) … … 182 182 } 183 183 184 bool qslim::quadrix_find_line_fit(const Mat4& Q,184 bool simplif::quadrix_find_line_fit(const Mat4& Q, 185 185 const Vec3& v1, const Vec3& v2, 186 186 Vec3& candidate) … … 206 206 } 207 207 208 bool qslim::quadrix_find_best_fit(const Mat4& Q, Vec3& candidate)208 bool simplif::quadrix_find_best_fit(const Mat4& Q, Vec3& candidate) 209 209 { 210 210 Mat4 K = Q; … … 237 237 #include <assert.h> 238 238 239 real qslim::quadrix_pair_target(const Mat4& Q,239 real simplif::quadrix_pair_target(const Mat4& Q, 240 240 Vertex *v1, 241 241 Vertex *v2, … … 257 257 { 258 258 candidate = *v1; 259 return qslim::quadrix_evaluate_vertex(candidate, Q);259 return simplif::quadrix_evaluate_vertex(candidate, Q); 260 260 } 261 261 else if( c2 > c1 ) 262 262 { 263 263 candidate = *v2; 264 return qslim::quadrix_evaluate_vertex(candidate, Q);264 return simplif::quadrix_evaluate_vertex(candidate, Q); 265 265 } 266 266 else if( c1>0 && policy>PLACE_LINE ) … … 273 273 { 274 274 case PLACE_OPTIMAL: 275 if( qslim::quadrix_find_best_fit(Q, candidate) )275 if( simplif::quadrix_find_best_fit(Q, candidate) ) 276 276 break; 277 277 278 278 case PLACE_LINE: 279 if( qslim::quadrix_find_line_fit(Q, *v1, *v2, candidate) )279 if( simplif::quadrix_find_line_fit(Q, *v1, *v2, candidate) ) 280 280 break; 281 281 282 282 default: 283 qslim::quadrix_find_local_fit(Q, *v1, *v2, candidate);283 simplif::quadrix_find_local_fit(Q, *v1, *v2, candidate); 284 284 break; 285 285 } 286 286 287 return qslim::quadrix_evaluate_vertex(candidate, Q);288 } 287 return simplif::quadrix_evaluate_vertex(candidate, Q); 288 }
Note: See TracChangeset
for help on using the changeset viewer.