Changes in src/tesselation.cpp [244a84:8db598]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/tesselation.cpp
r244a84 r8db598 14 14 #include "tesselation.hpp" 15 15 #include "tesselationhelpers.hpp" 16 #include "triangleintersectionlist.hpp" 16 17 #include "vector.hpp" 17 18 #include "verbose.hpp" … … 474 475 }; 475 476 476 /** Finds the point on the triangle \a *BTS through which the line defined by \a *MolCenter and \a *x crosses. 477 * We call Vector::GetIntersectionWithPlane() to receive the intersection point with the plane 477 /** Finds the point on the triangle to the point \a *x. 478 * We call Vector::GetIntersectionWithPlane() with \a * and the center of the triangle to receive an intersection point. 479 * Then we check the in-plane part (the part projected down onto plane). We check whether it crosses one of the 480 * boundary lines. If it does, we return this intersection as closest point, otherwise the projected point down. 478 481 * Thus we test if it's really on the plane and whether it's inside the triangle on the plane or not. 479 482 * The latter is done as follows: We calculate the cross point of one of the triangle's baseline with the line … … 3222 3225 }; 3223 3226 3224 3225 3227 /** Finds the triangle that is closest to a given Vector \a *x. 3226 3228 * \param *out output stream for debugging … … 3315 3317 * \param *out output stream for debugging 3316 3318 * \param *x Vector to look from 3319 * \param &distance contains found distance on return 3317 3320 * \return list of BoundaryTriangleSet of nearest triangles or NULL. 3318 3321 */ … … 3358 3361 bool Tesselation::IsInnerPoint(const Vector &Point, const LinkedCell* const LC) const 3359 3362 { 3360 return (GetDistanceSquaredToSurface(Point, LC) < MYEPSILON); 3361 } 3363 Info FunctionInfo(__func__); 3364 TriangleIntersectionList Intersections(&Point,this,LC); 3365 3366 return Intersections.IsInside(); 3367 }; 3362 3368 3363 3369 /** Returns the distance to the surface given by the tesselation. … … 3432 3438 }; 3433 3439 3434 /** Calculates distanceto a tesselated surface.3440 /** Calculates minimum distance from \a&Point to a tesselated surface. 3435 3441 * Combines \sa FindClosestTrianglesToVector() and \sa GetDistanceSquaredToTriangle(). 3436 3442 * \param &Point point to calculate distance from … … 3438 3444 * \return distance squared to closest point on surface 3439 3445 */ 3440 double Tesselation::GetDistanceSquaredToSurface(const Vector &Point, const LinkedCell* const LC) const 3441 { 3442 BoundaryTriangleSet *triangle = FindClosestTriangleToVector(&Point, LC); 3443 const double distance = GetDistanceSquaredToTriangle(Point, triangle); 3444 return Min(distance, LC->RADIUS); 3446 double Tesselation::GetDistanceToSurface(const Vector &Point, const LinkedCell* const LC) const 3447 { 3448 Info FunctionInfo(__func__); 3449 TriangleIntersectionList Intersections(&Point,this,LC); 3450 3451 return Intersections.GetSmallestDistance(); 3452 }; 3453 3454 /** Calculates minimum distance from \a&Point to a tesselated surface. 3455 * Combines \sa FindClosestTrianglesToVector() and \sa GetDistanceSquaredToTriangle(). 3456 * \param &Point point to calculate distance from 3457 * \param *LC needed for finding closest points fast 3458 * \return distance squared to closest point on surface 3459 */ 3460 BoundaryTriangleSet * Tesselation::GetClosestTriangleOnSurface(const Vector &Point, const LinkedCell* const LC) const 3461 { 3462 Info FunctionInfo(__func__); 3463 TriangleIntersectionList Intersections(&Point,this,LC); 3464 3465 return Intersections.GetClosestTriangle(); 3445 3466 }; 3446 3467
Note:
See TracChangeset
for help on using the changeset viewer.