Clean project structure.
This commit is contained in:
parent
78a4fa99ff
commit
947bf937fd
496 changed files with 206 additions and 137 deletions
11
src/base/geometry/math/Linalg.cpp
Normal file
11
src/base/geometry/math/Linalg.cpp
Normal file
|
@ -0,0 +1,11 @@
|
|||
#include "Linalg.h"
|
||||
|
||||
double Linalg::dotProduct(const Vector& v0, const Vector& v1)
|
||||
{
|
||||
return v0.dotProduct(v1);
|
||||
}
|
||||
|
||||
Vector Linalg::crossProduct(const Vector& v0, const Vector& v1)
|
||||
{
|
||||
return v0.crossProduct(v1);
|
||||
}
|
10
src/base/geometry/math/Linalg.h
Normal file
10
src/base/geometry/math/Linalg.h
Normal file
|
@ -0,0 +1,10 @@
|
|||
#pragma once
|
||||
|
||||
#include "Vector.h"
|
||||
|
||||
class Linalg
|
||||
{
|
||||
static double dotProduct(const Vector& v0, const Vector& v1);
|
||||
|
||||
static Vector crossProduct(const Vector& v0, const Vector& v1);
|
||||
};
|
0
src/base/geometry/math/Matrix.cpp
Normal file
0
src/base/geometry/math/Matrix.cpp
Normal file
14
src/base/geometry/math/Matrix.h
Normal file
14
src/base/geometry/math/Matrix.h
Normal file
|
@ -0,0 +1,14 @@
|
|||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
|
||||
class Matrix
|
||||
{
|
||||
public:
|
||||
Matrix(unsigned numRows, unsigned numColumns)
|
||||
{
|
||||
mData = std::vector<double>(numRows * numColumns, 0.0);
|
||||
}
|
||||
private:
|
||||
std::vector<double> mData;
|
||||
};
|
61
src/base/geometry/math/Vector.cpp
Normal file
61
src/base/geometry/math/Vector.cpp
Normal file
|
@ -0,0 +1,61 @@
|
|||
#include "Vector.h"
|
||||
|
||||
Vector::Vector(double x, double y, double z)
|
||||
: mX(x),
|
||||
mY(y),
|
||||
mZ(z)
|
||||
{
|
||||
updateLength();
|
||||
}
|
||||
|
||||
Vector::~Vector()
|
||||
{
|
||||
};
|
||||
|
||||
double Vector::getX() const
|
||||
{
|
||||
return mX;
|
||||
}
|
||||
|
||||
double Vector::getY() const
|
||||
{
|
||||
return mY;
|
||||
}
|
||||
|
||||
double Vector::getZ() const
|
||||
{
|
||||
return mZ;
|
||||
}
|
||||
|
||||
double Vector::getLength() const
|
||||
{
|
||||
return mLength;
|
||||
}
|
||||
|
||||
double Vector::dotProduct(const Vector& v) const
|
||||
{
|
||||
return mX * v.mX + mY * v.mY + mZ * v.mZ;
|
||||
}
|
||||
|
||||
Vector Vector::crossProduct(const Vector& v) const
|
||||
{
|
||||
return Vector(v.mY * mZ - v.mZ * mY, v.mZ * mX - v.mX * mZ, v.mX * mY - v.mY * mX);
|
||||
}
|
||||
|
||||
Vector Vector::getNormalized() const
|
||||
{
|
||||
return Vector(mX / mLength, mY / mLength, mZ / mLength);
|
||||
}
|
||||
|
||||
void Vector::scale(double x, double y, double z)
|
||||
{
|
||||
mX = x * mX;
|
||||
mY = y * mY;
|
||||
mZ = z * mZ;
|
||||
updateLength();
|
||||
}
|
||||
|
||||
void Vector::updateLength()
|
||||
{
|
||||
mLength = std::sqrt(mX * mX + mY * mY + mZ * mZ);
|
||||
}
|
48
src/base/geometry/math/Vector.h
Normal file
48
src/base/geometry/math/Vector.h
Normal file
|
@ -0,0 +1,48 @@
|
|||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
#include <cmath>
|
||||
|
||||
class Vector
|
||||
{
|
||||
public:
|
||||
Vector(double x = 0, double y = 0, double z = 0);
|
||||
|
||||
~Vector();
|
||||
|
||||
double getX() const;
|
||||
|
||||
double getY() const;
|
||||
|
||||
double getZ() const;
|
||||
|
||||
double getLength() const;
|
||||
|
||||
Vector getNormalized() const;
|
||||
|
||||
void scale(double x, double y, double z = 1.0);
|
||||
|
||||
double dotProduct(const Vector& v) const;
|
||||
|
||||
Vector crossProduct(const Vector& v) const;
|
||||
|
||||
bool operator==(const Vector& rhs) const
|
||||
{
|
||||
return (mX == rhs.mX)
|
||||
&& (mY == rhs.mY)
|
||||
&& (mZ == rhs.mZ);
|
||||
}
|
||||
|
||||
bool operator!=(const Vector& rhs) const
|
||||
{
|
||||
return !operator==(rhs);
|
||||
}
|
||||
|
||||
private:
|
||||
void updateLength();
|
||||
|
||||
double mLength{ 0 };
|
||||
double mX{ 0 };
|
||||
double mY{ 0 };
|
||||
double mZ{ 0 };
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue