Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/tesselation.cpp

    r244a84 r8db598  
    1414#include "tesselation.hpp"
    1515#include "tesselationhelpers.hpp"
     16#include "triangleintersectionlist.hpp"
    1617#include "vector.hpp"
    1718#include "verbose.hpp"
     
    474475};
    475476
    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.
    478481 * Thus we test if it's really on the plane and whether it's inside the triangle on the plane or not.
    479482 * The latter is done as follows: We calculate the cross point of one of the triangle's baseline with the line
     
    32223225};
    32233226
    3224 
    32253227/** Finds the triangle that is closest to a given Vector \a *x.
    32263228 * \param *out output stream for debugging
     
    33153317 * \param *out output stream for debugging
    33163318 * \param *x Vector to look from
     3319 * \param &distance contains found distance on return
    33173320 * \return list of BoundaryTriangleSet of nearest triangles or NULL.
    33183321 */
     
    33583361bool Tesselation::IsInnerPoint(const Vector &Point, const LinkedCell* const LC) const
    33593362{
    3360   return (GetDistanceSquaredToSurface(Point, LC) < MYEPSILON);
    3361 }
     3363  Info FunctionInfo(__func__);
     3364  TriangleIntersectionList Intersections(&Point,this,LC);
     3365
     3366  return Intersections.IsInside();
     3367};
    33623368
    33633369/** Returns the distance to the surface given by the tesselation.
     
    34323438};
    34333439
    3434 /** Calculates distance to a tesselated surface.
     3440/** Calculates minimum distance from \a&Point to a tesselated surface.
    34353441 * Combines \sa FindClosestTrianglesToVector() and \sa GetDistanceSquaredToTriangle().
    34363442 * \param &Point point to calculate distance from
     
    34383444 * \return distance squared to closest point on surface
    34393445 */
    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);
     3446double 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 */
     3460BoundaryTriangleSet * 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();
    34453466};
    34463467
Note: See TracChangeset for help on using the changeset viewer.