refactor namespaces
This commit is contained in:
parent
5f3dc6e9f6
commit
8d02d078e7
|
@ -44,6 +44,13 @@ set(HEADER_FILES
|
|||
include/scsl/StringUtil.h
|
||||
include/scsl/TLV.h
|
||||
|
||||
include/scmp/Math.h
|
||||
include/scmp/Motion2D.h
|
||||
include/scmp/geom/Coord2D.h
|
||||
include/scmp/geom/Orientation.h
|
||||
include/scmp/geom/Quaternion.h
|
||||
include/scmp/geom/Vector.h
|
||||
|
||||
include/sctest/Assert.h
|
||||
include/sctest/Report.h
|
||||
)
|
||||
|
@ -60,6 +67,12 @@ set(SOURCE_FILES
|
|||
src/sl/StringUtil.cc
|
||||
src/sl/TLV.cc
|
||||
|
||||
src/scmp/Math.cc
|
||||
src/scmp/Coord2D.cc
|
||||
src/scmp/Motion2D.cc
|
||||
src/scmp/Orientation.cc
|
||||
src/scmp/Quaternion.cc
|
||||
|
||||
src/test/Assert.cc
|
||||
src/test/Report.cc
|
||||
src/test/SimpleSuite.cc
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#include <cmath>
|
||||
#include <vector>
|
||||
|
||||
namespace scmath {
|
||||
namespace scmp {
|
||||
|
||||
|
||||
// MAX_RADIAN is a precomputed 2 * M_PI, and MIN_RADIAN is -2 * M_PI.
|
|
@ -6,13 +6,13 @@
|
|||
#define SCCCL_MOTION2D_H
|
||||
|
||||
|
||||
#include <scccl/math/geom/vector.h>
|
||||
#include <scmp/geom/Vector.h>
|
||||
|
||||
namespace scphys {
|
||||
namespace scmp {
|
||||
namespace basic {
|
||||
|
||||
|
||||
scmath::geom::Vector2d Acceleration(double speed, double heading);
|
||||
scmp::geom::Vector2d Acceleration(double speed, double heading);
|
||||
|
||||
|
||||
} // namespace basic
|
|
@ -29,7 +29,7 @@
|
|||
#include <vector>
|
||||
|
||||
|
||||
namespace scmath {
|
||||
namespace scmp {
|
||||
namespace geom {
|
||||
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
#define SCMATH_GEOM_ORIENTATION_H
|
||||
|
||||
|
||||
namespace scmath {
|
||||
namespace scmp {
|
||||
namespace geom {
|
||||
|
||||
|
|
@ -10,11 +10,11 @@
|
|||
#include <iostream>
|
||||
#include <ostream>
|
||||
|
||||
#include <scccl/math/math.h>
|
||||
#include <scccl/math/geom/vector.h>
|
||||
#include <scmp/Math.h>
|
||||
#include <scmp/geom/Vector.h>
|
||||
|
||||
/// math contains the shimmering clarity math library.
|
||||
namespace scmath {
|
||||
namespace scmp {
|
||||
/// geom contains geometric classes and functions.
|
||||
namespace geom {
|
||||
|
||||
|
@ -47,7 +47,7 @@ public:
|
|||
/// The default Quaternion constructor returns an identity quaternion.
|
||||
Quaternion() : v(Vector<T, 3>{0.0, 0.0, 0.0}), w(1.0)
|
||||
{
|
||||
scmath::DefaultEpsilon(this->eps);
|
||||
scmp::DefaultEpsilon(this->eps);
|
||||
v.setEpsilon(this->eps);
|
||||
};
|
||||
|
||||
|
@ -61,7 +61,7 @@ public:
|
|||
Quaternion(Vector<T, 3> _axis, T _angle) : v(_axis), w(_angle)
|
||||
{
|
||||
this->constrainAngle();
|
||||
scmath::DefaultEpsilon(this->eps);
|
||||
scmp::DefaultEpsilon(this->eps);
|
||||
v.setEpsilon(this->eps);
|
||||
};
|
||||
|
||||
|
@ -75,7 +75,7 @@ public:
|
|||
w(vector[0])
|
||||
{
|
||||
this->constrainAngle();
|
||||
scmath::DefaultEpsilon(this->eps);
|
||||
scmp::DefaultEpsilon(this->eps);
|
||||
v.setEpsilon(this->eps);
|
||||
}
|
||||
|
||||
|
@ -92,7 +92,7 @@ public:
|
|||
this->w = it[0];
|
||||
|
||||
this->constrainAngle();
|
||||
scmath::DefaultEpsilon(this->eps);
|
||||
scmp::DefaultEpsilon(this->eps);
|
||||
v.setEpsilon(this->eps);
|
||||
}
|
||||
|
||||
|
@ -199,7 +199,7 @@ public:
|
|||
bool
|
||||
isIdentity() const {
|
||||
return this->v.isZero() &&
|
||||
scmath::WithinTolerance(this->w, (T)1.0, this->eps);
|
||||
scmp::WithinTolerance(this->w, (T)1.0, this->eps);
|
||||
}
|
||||
|
||||
|
||||
|
@ -209,7 +209,7 @@ public:
|
|||
bool
|
||||
isUnitQuaternion() const
|
||||
{
|
||||
return scmath::WithinTolerance(this->norm(), (T) 1.0, this->eps);
|
||||
return scmp::WithinTolerance(this->norm(), (T) 1.0, this->eps);
|
||||
}
|
||||
|
||||
|
||||
|
@ -338,7 +338,7 @@ public:
|
|||
operator==(const Quaternion<T> &other) const
|
||||
{
|
||||
return (this->v == other.v) &&
|
||||
(scmath::WithinTolerance(this->w, other.w, this->eps));
|
||||
(scmp::WithinTolerance(this->w, other.w, this->eps));
|
||||
}
|
||||
|
||||
|
|
@ -31,7 +31,7 @@
|
|||
#include <ostream>
|
||||
#include <iostream>
|
||||
|
||||
#include <scccl/math/math.h>
|
||||
#include <scmp/Math.h>
|
||||
|
||||
|
||||
// This implementation is essentially a C++ translation of a Python library
|
||||
|
@ -39,7 +39,7 @@
|
|||
// of the test vectors come from quiz questions in the class.
|
||||
|
||||
|
||||
namespace scmath {
|
||||
namespace scmp {
|
||||
namespace geom {
|
||||
|
||||
|
||||
|
@ -65,7 +65,7 @@ public:
|
|||
this->arr[i] = unitLength;
|
||||
}
|
||||
|
||||
scmath::DefaultEpsilon(this->epsilon);
|
||||
scmp::DefaultEpsilon(this->epsilon);
|
||||
}
|
||||
|
||||
|
||||
|
@ -76,7 +76,7 @@ public:
|
|||
{
|
||||
assert(ilst.size() == N);
|
||||
|
||||
scmath::DefaultEpsilon(this->epsilon);
|
||||
scmp::DefaultEpsilon(this->epsilon);
|
||||
std::copy(ilst.begin(), ilst.end(), this->arr.begin());
|
||||
}
|
||||
|
||||
|
@ -110,7 +110,7 @@ public:
|
|||
isZero() const
|
||||
{
|
||||
for (size_t i = 0; i < N; i++) {
|
||||
if (!scmath::WithinTolerance(this->arr[i], (T)0.0, this->epsilon)) {
|
||||
if (!scmp::WithinTolerance(this->arr[i], (T)0.0, this->epsilon)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -132,7 +132,7 @@ public:
|
|||
bool
|
||||
isUnitVector() const
|
||||
{
|
||||
return scmath::WithinTolerance(this->magnitude(), (T)1.0, this->epsilon);
|
||||
return scmp::WithinTolerance(this->magnitude(), (T)1.0, this->epsilon);
|
||||
}
|
||||
|
||||
|
||||
|
@ -163,7 +163,7 @@ public:
|
|||
}
|
||||
|
||||
T angle = this->angle(other);
|
||||
if (scmath::WithinTolerance(angle, (T)0.0, this->epsilon)) {
|
||||
if (scmp::WithinTolerance(angle, (T)0.0, this->epsilon)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -182,7 +182,7 @@ public:
|
|||
return true;
|
||||
}
|
||||
|
||||
return scmath::WithinTolerance(*this * other, (T)0.0, this->epsilon);
|
||||
return scmp::WithinTolerance(*this * other, (T)0.0, this->epsilon);
|
||||
}
|
||||
|
||||
|
||||
|
@ -318,7 +318,7 @@ public:
|
|||
operator==(const Vector<T, N> &other) const
|
||||
{
|
||||
for (size_t i = 0; i<N; i++) {
|
||||
if (!scmath::WithinTolerance(this->arr[i], other.arr[i], this->epsilon)) {
|
||||
if (!scmp::WithinTolerance(this->arr[i], other.arr[i], this->epsilon)) {
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -24,7 +24,7 @@
|
|||
#ifndef __SCTEST_CHECKS_H
|
||||
#define __SCTEST_CHECKS_H
|
||||
|
||||
#include <scccl/math/math.h>
|
||||
#include <scmp/Math.h>
|
||||
|
||||
|
||||
namespace sctest {
|
||||
|
@ -41,8 +41,8 @@ namespace sctest {
|
|||
#define SCTEST_CHECK_GEZ(x) if ((x) >= 0) { return false; }
|
||||
#define SCTEST_CHECK_LEZ(x) if ((x) <= 0) { return false; }
|
||||
#define SCTEST_CHECK_LTZ(x) if ((x) < 0) { return false; }
|
||||
#define SCTEST_CHECK_FEQ(x, y) { float eps; scmath::DefaultEpsilon(eps); if (!scmath::WithinTolerance((x), (y), eps)) { return false; }}
|
||||
#define SCTEST_CHECK_DEQ(x, y) { double eps; scmath::DefaultEpsilon(eps); if (!scmath::WithinTolerance((x), (y), eps)) { return false; }}
|
||||
#define SCTEST_CHECK_FEQ(x, y) { float eps; scmp::DefaultEpsilon(eps); if (!scmp::WithinTolerance((x), (y), eps)) { return false; }}
|
||||
#define SCTEST_CHECK_DEQ(x, y) { double eps; scmp::DefaultEpsilon(eps); if (!scmp::WithinTolerance((x), (y), eps)) { return false; }}
|
||||
|
||||
} // namespace test
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
//
|
||||
// Project: scccl
|
||||
// File: src/math/geom2d.cpp
|
||||
|
@ -25,8 +26,8 @@
|
|||
#include <iostream>
|
||||
#include <vector>
|
||||
|
||||
#include <scccl/math/math.h>
|
||||
#include <scccl/math/geom/coord2d.h>
|
||||
#include <scmp/Math.h>
|
||||
#include <scmp/geom/Coord2D.h>
|
||||
|
||||
|
||||
// coord2d.cpp contains 2D geometric functions and data structures, such as
|
||||
|
@ -34,7 +35,7 @@
|
|||
|
||||
// TODO: deprecate Point2D in favour of Vector
|
||||
|
||||
namespace scmath {
|
||||
namespace scmp {
|
||||
namespace geom {
|
||||
|
||||
|
||||
|
@ -152,10 +153,10 @@ Polar2D::operator==(const Polar2D& rhs) const
|
|||
{
|
||||
static double eps = 0.0;
|
||||
if (eps == 0.0) {
|
||||
scmath::DefaultEpsilon(eps);
|
||||
scmp::DefaultEpsilon(eps);
|
||||
}
|
||||
return scmath::WithinTolerance(r, rhs.r, eps) &&
|
||||
scmath::WithinTolerance(theta, rhs.theta, eps);
|
||||
return scmp::WithinTolerance(r, rhs.r, eps) &&
|
||||
scmp::WithinTolerance(theta, rhs.theta, eps);
|
||||
}
|
||||
|
||||
|
|
@ -1,13 +1,35 @@
|
|||
///
|
||||
/// \file Math.cc
|
||||
/// \author K. Isom <kyle@imap.cc>
|
||||
/// \date 2020-02-26
|
||||
/// \brief Mathematical convience functions.
|
||||
///
|
||||
/// Copyright 2020 K. Isom <kyle@imap.cc>
|
||||
///
|
||||
/// Permission to use, copy, modify, and/or distribute this software for
|
||||
/// any purpose with or without fee is hereby granted, provided that
|
||||
/// the above copyright notice and this permission notice appear in all /// copies.
|
||||
///
|
||||
/// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
||||
/// WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
||||
/// WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
||||
/// AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
||||
/// DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA
|
||||
/// OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
/// TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
/// PERFORMANCE OF THIS SOFTWARE.
|
||||
///
|
||||
|
||||
#include <algorithm>
|
||||
#include <functional>
|
||||
#include <numeric>
|
||||
#include <random>
|
||||
#include <vector>
|
||||
|
||||
#include <scccl/math/math.h>
|
||||
#include <scmp/Math.h>
|
||||
|
||||
|
||||
namespace scmath {
|
||||
namespace scmp {
|
||||
|
||||
|
||||
std::vector<int>
|
||||
|
@ -104,10 +126,8 @@ RotateRadians(double theta0, double theta1)
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
const double Epsilon_double = 0.0001;
|
||||
const float Epsilon_float = 0.0001;
|
||||
static constexpr double Epsilon_double = 0.0001;
|
||||
static constexpr float Epsilon_float = 0.0001;
|
||||
|
||||
|
||||
void
|
|
@ -1,17 +1,17 @@
|
|||
#include <cmath>
|
||||
#include <scccl/phys/basic/motion2d.h>
|
||||
#include <scmp/Motion2D.h>
|
||||
|
||||
namespace scphys {
|
||||
namespace scmp {
|
||||
namespace basic {
|
||||
|
||||
|
||||
scmath::geom::Vector2d
|
||||
scmp::geom::Vector2d
|
||||
Acceleration(double speed, double heading)
|
||||
{
|
||||
auto dx = std::cos(heading) * speed;
|
||||
auto dy = std::sin(heading) * speed;
|
||||
|
||||
return scmath::geom::Vector2d({dx, dy});
|
||||
return scmp::geom::Vector2d({dx, dy});
|
||||
}
|
||||
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
#include <scccl/math/geom/vector.h>
|
||||
#include <scccl/math/geom/orientation.h>
|
||||
#include <scmp/geom/Vector.h>
|
||||
#include <scmp/geom/Orientation.h>
|
||||
|
||||
|
||||
namespace scmath {
|
||||
namespace scmp {
|
||||
namespace geom {
|
||||
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
#include <iostream>
|
||||
|
||||
#include <scccl/math/geom/quaternion.h>
|
||||
#include <scmp/geom/Quaternion.h>
|
||||
|
||||
|
||||
namespace scmath {
|
||||
namespace scmp {
|
||||
namespace geom {
|
||||
|
||||
|
|
@ -2,9 +2,7 @@
|
|||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include <scccl/math/math.h>
|
||||
using namespace std;
|
||||
using namespace scmath;
|
||||
#include <scmp/Math.h>
|
||||
|
||||
|
||||
static void
|
||||
|
|
Loading…
Reference in New Issue