Whole project

This commit is contained in:
Gnarly Narwhal 2019-04-30 03:21:16 -07:00 committed by Gnarwhal
parent 61ddd9fc26
commit c0fa3999c7
Signed by: Gnarwhal
GPG key ID: 0989A73D8C421174
78 changed files with 3671 additions and 93 deletions

View file

@ -77,15 +77,6 @@ class GenoVector<2, T> {
}
public:
static GenoVector<2, T> * newArray(uint32 length) {
T * v = new T[2 * length];
GenoVector<2, T> * ret = new GenoVector<2, T>[length];
ret[0] = GenoVector<2, T>(v);
for (uint32 i = 1; i < length; ++i)
ret[i] = GenoVector<2, T>(v + i * 2, false);
return ret;
}
T * v;
GenoVector() :
@ -277,6 +268,21 @@ class GenoVector<2, T> {
return *this;
}
GenoVector<2, T> & bisect(const GenoVector<2, T> & vector) {
return *this = getLength() * vector + *this * vector.getLength();
}
GenoVector<2, T> & lerp(const GenoVector<2, T> & end, double interpAmount) {
v[0] = (T) (v[0] + (end.v[0] - v[0]) * interpAmount);
v[1] = (T) (v[1] + (end.v[1] - v[1]) * interpAmount);
return *this;
}
bool isZeroVector() {
return v[0] == 0 &&
v[1] == 0;
}
GenoVector<2, T> & shear(T axisAngle, T shearAngle) {
auto sinAxis = sin(axisAngle);
auto cosAxis = cos(axisAngle);
@ -581,7 +587,7 @@ GenoVector<2, T> operator+(const GenoVector<2, T> & left, const GenoVector<2, T>
template <typename T>
GenoVector<2, T> operator-(const GenoVector<2, T> & left, const GenoVector<2, T> & right) {
return {
return {
left.v[0] - right.v[0],
left.v[1] - right.v[1]
};
@ -765,6 +771,21 @@ GenoVector<2, T> & project(const GenoVector<2, T> & vector, const GenoVector<2,
return target;
}
template <typename T>
GenoVector<2, T> lerp(const GenoVector<2, T> & start, const GenoVector<2, T> & end, double interpAmount) {
return {
(T) (start.v[0] + (end.v[0] - start.v[0]) * interpAmount),
(T) (start.v[1] + (end.v[1] - start.v[1]) * interpAmount)
};
}
template <typename T>
GenoVector<2, T> & lerp(const GenoVector<2, T> & start, const GenoVector<2, T> & end, double interpAmount, GenoVector<2, T> & target) {
target.v[0] = (T) (start.v[0] + (end.v[0] - start.v[0]) * interpAmount);
target.v[1] = (T) (start.v[1] + (end.v[1] - start.v[1]) * interpAmount);
return target;
}
template <typename T>
GenoVector<2, T> shear(const GenoVector<2, T> & vector, T axisAngle, T shearAngle) {
auto sinAxis = sin(axisAngle);