diff --git a/include/ttl/ttl_util.h b/include/ttl/ttl_util.h index cc311edb69..cfdf509531 100644 --- a/include/ttl/ttl_util.h +++ b/include/ttl/ttl_util.h @@ -56,7 +56,7 @@ /** \brief Utilities -* +* * This name space contains utility functions for TTL.\n * * Point and vector algebra such as scalar product and cross product @@ -73,10 +73,10 @@ * which is the z-component of the actual cross product * (the x and y components are both zero). * -* \see +* \see * ttl and \ref api * -* \author +* \author * Øyvind Hjelle, oyvindhj@ifi.uio.no */ @@ -118,7 +118,7 @@ namespace ttl_util { return dx1*dy2 - dy1*dx2; } - + //------------------------------------------------------------------------------------------------ /** Returns a positive value if the 2D nodes/points \e pa, \e pb, and * \e pc occur in counterclockwise order; a negative value if they occur @@ -138,177 +138,6 @@ namespace ttl_util { return acx * bcy - acy * bcx; } - - //------------------------------------------------------------------------------------------------ - /* Scalar product between 2D vectors represented as darts. - * - * \par Requires: - * - real_type DartType::x() - * - real_type DartType::y() - */ - /* - template - typename TTLtraits::real_type scalarProduct2d(const DartType& d1, const DartType& d2) { - - DartType d10 = d1; - d10.alpha0(); - - DartType d20 = d2; - d20.alpha0(); - - return scalarProduct2d(d10.x() - d1.x(), d10.y() - d1.y(), d20.x() - d2.x(), d20.y() - d2.y()); - } - */ - - - //------------------------------------------------------------------------------------------------ - /* Scalar product between 2D vectors. - * The first vector is represented by the given dart, and the second vector has - * direction from the node of the given dart - and to the given point. - * - * \par Requires: - * - real_type DartType::x(), real_type DartType::y() - * - real_type PointType2d::x(), real_type PointType2d::y() - */ - /* - template - typename TTLtraits::real_type scalarProduct2d(const typename TTLtraits::DartType& d, - const typename TTLtraits::PointType2d& p) { - typename TTLtraits::DartType d0 = d; - d0.alpha0(); - - return scalarProduct2d(d0.x() - d.x(), d0.y() - d.y(), p.x() - d.x(), p.y() - d.y()); - } - */ - - - //------------------------------------------------------------------------------------------------ - /* Cross product between 2D vectors represented as darts. - * - * \par Requires: - * - real_type DartType::x(), real_type DartType::y() - */ - /* - template - typename TTLtraits::real_type crossProduct2d(const typename TTLtraits::DartType& d1, - const typename TTLtraits::DartType& d2) { - - TTLtraits::DartType d10 = d1; - d10.alpha0(); - - TTLtraits::DartType d20 = d2; - d20.alpha0(); - - return crossProduct2d(d10.x() - d1.x(), d10.y() - d1.y(), d20.x() - d2.x(), d20.y() - d2.y()); - } - */ - - - //------------------------------------------------------------------------------------------------ - /* Cross product between 2D vectors. - * The first vector is represented by the given dart, and the second vector has - * direction from the node associated with given dart - and to the given point. - * - * \par Requires: - * - real_type DartType::x() - * - real_type DartType::y() - */ - /* - template - typename TTLtraits::real_type crossProduct2d(const typename TTLtraits::DartType& d, - const typename TTLtraits::PointType2d& p) { - - TTLtraits::DartType d0 = d; - d0.alpha0(); - - return crossProduct2d(d0.x() - d.x(), d0.y() - d.y(), p.x() - d.x(), p.y() - d.y()); - } - */ - // Geometric predicates; see more robust schemes by Jonathan Richard Shewchuk at - // http://www.cs.cmu.edu/~quake/robust.html - - - //------------------------------------------------------------------------------------------------ - /* Return a positive value if the 2d nodes/points \e d, \e d.alpha0(), and - * \e p occur in counterclockwise order; a negative value if they occur - * in clockwise order; and zero if they are collinear. The - * result is also a rough approximation of twice the signed - * area of the triangle defined by the three points. - * - * \par Requires: - * - DartType::x(), DartType::y(), - * - PointType2d::x(), PointType2d::y() - */ - /* - template - typename TTLtraits::real_type orient2dfast(const DartType& n1, const DartType& n2, - const PointType2d& p) { - return ((n2.x()-n1.x())*(p.y()-n1.y()) - (p.x()-n1.x())*(n2.y()-n1.y())); - } - */ - - //@} // End of Computational geometry - - - //------------------------------------------------------------------------------------------------ - // ---------------------------- Utilities Involving Points Group -------------------------------- - //------------------------------------------------------------------------------------------------ - - /** @name Utilities involving points */ - //@{ - - //------------------------------------------------------------------------------------------------ - /** Creates random data on the unit square. - * - * \param noPoints - * Number of random points to be generated - * - * \param seed - * Initial value for pseudorandom number generator - * - * \require - * - Constructor \c PointType::PointType(double x, double y).\n - * For example, one can use \c pair. - * - * \note - * - To deduce template argument for PointType the function must be - * called with the syntax: \c createRandomData(...) where \c MyPoint - * is the actual point type. - */ - template - std::vector* createRandomData(int noPoints, int seed=1) { - -#ifdef _MSC_VER - srand(seed); -#else - srand48((long int)seed); -#endif - - double x, y; - std::vector* points = new std::vector(noPoints); - typename std::vector::iterator it; - for (it = points->begin(); it != points->end(); ++it) { - -#ifdef _MSC_VER - int random = rand(); - x = ((double)random/(double)RAND_MAX); - random = rand(); - y = ((double)random/(double)RAND_MAX); - *it = new PointType(x,y); -#else - double random = drand48(); - x = random; - random = drand48(); - y = random; - *it = new PointType(x,y); -#endif - - } - return points; - } - - //@} // End of Utilities involving points - }; // End of ttl_util namespace scope #endif // _TTL_UTIL_H_