https://gitlab.opengeosys.org/ogs/ogs.git
Raw File
Tip revision: 4c3cfd195e30b63ea4891ce30624791881a54d7e authored by Tom Fischer on 15 June 2015, 10:28:54 UTC
Merge pull request #701 from bilke/changelog
Tip revision: 4c3cfd1
Point3d.cpp
/**
 * \file
 * \date   2015-01-16
 * \brief  Implementation of the Point3d class.
 *
 * \copyright
 * Copyright (c) 2012-2015, OpenGeoSys Community (http://www.opengeosys.org)
 *            Distributed under a Modified BSD License.
 *              See accompanying file LICENSE.txt or
 *              http://www.opengeosys.org/project/license
 *
 */

#include <cmath>

#include "Point3d.h"

bool operator< (const MathLib::Point3d& p0, const MathLib::Point3d& p1)
{
	if (p0[0] > p1[0]) {
		return false;
	} else {
		if (p0[0] < p1[0]) {
			return true;
		}
	}
	// => p0[0] == p1[0]

	if (p0[1] > p1[1]) {
		return false;
	} else {
		if (p0[1] < p1[1]) {
			return true;
		}
	}
	// => p0[1] == p1[1]

	if (p0[2] > p1[2]) {
		return false;
	} else {
		if (p0[2] < p1[2]) {
			return true;
		}
		return false; // p0 == p1
	}
}

bool operator<= (const MathLib::Point3d& p0, const MathLib::Point3d& p1)
{
	if (p0[0] > p1[0]) {
		return false;
	} else {
		if (p0[0] < p1[0]) {
			return true;
		}
	}
	// => p0[0] == p1[0]

	if (p0[1] > p1[1]) {
		return false;
	} else {
		if (p0[1] < p1[1]) {
			return true;
		}
	}
	// => p0[1] == p1[1]

	if (p0[2] > p1[2]) {
		return false;
	} else {
		return true;
	}
}

bool lessEq(const MathLib::Point3d& p0, const MathLib::Point3d& p1, double tol)
{
	// test a relative and an absolute criterion
	if (fabs(p0[0]-p1[0]) > tol * std::min(fabs(p1[0]), fabs(p0[0])) && fabs(p0[0]-p1[0]) > tol) {
		if (p0[0] <= p1[0])
			return true;
		else
			return false;
	} else {
		// assume p0[0] == p1[0]
		if (fabs (p0[1]-p1[1]) > tol * fabs(p0[1]) && fabs(p0[1]-p1[1]) > tol) {
			if (p0[1] <= p1[1])
				return true;
			else
				return false;
		} else {
			// assume p0[1] == p1[1] and p0[0] == p1[0]
			if (fabs (p0[2]-p1[2]) > tol * fabs(p0[2]) && fabs(p0[2]-p1[2]) > tol) {
				if (p0[2] <= p1[2])
					return true;
				else
					return false;
			} else {
				return true;
			}
		}
	}
}

back to top