usually works. need to figure out what causes it to not to sometimes.

This commit is contained in:
yggdrasil75
2026-01-26 20:02:01 -05:00
parent ed6b625826
commit c3916d146a
10 changed files with 743 additions and 200 deletions

View File

@@ -362,28 +362,24 @@ public:
std::abs(z - other.z) < epsilon;
}
// Template friend operators to allow different scalar types
// template<typename S>
// friend Vec3<T> operator+(S scalar, const Vec3<T>& vec) {
// return Vec3<T>(static_cast<T>(scalar + vec.x),
// static_cast<T>(scalar + vec.y),
// static_cast<T>(scalar + vec.z));
// }
friend Vec3<T> operator+(float scalar, const Vec3<T>& vec) {
return Vec3<T>(static_cast<T>(scalar + vec.x),
static_cast<T>(scalar + vec.y),
static_cast<T>(scalar + vec.z));
}
// template<typename S>
// friend Vec3<T> operator-(S scalar, const Vec3<T>& vec) {
// return Vec3<T>(static_cast<T>(scalar - static_cast<S>(vec.x)),
// static_cast<T>(scalar - static_cast<S>(vec.y)),
// static_cast<T>(scalar - static_cast<S>(vec.z)));
// }
friend Vec3<T> operator-(float scalar, const Vec3<T>& vec) {
return Vec3<T>(static_cast<T>(scalar - vec.x),
static_cast<T>(scalar - vec.y),
static_cast<T>(scalar - vec.z));
}
friend Vec3<T> operator*(float scalar, const Vec3<T>& vec) {
return Vec3<T>(static_cast<T>(scalar * vec.x),
static_cast<T>(scalar * vec.y),
static_cast<T>(scalar * vec.z));
}
// template<typename S>
// friend Vec3<T> operator*(S scalar, const Vec3<T>& vec) {
// return Vec3<T>(static_cast<T>(scalar * vec.x),
// static_cast<T>(scalar * vec.y),
// static_cast<T>(scalar * vec.z));
// }
//previously was commented because Vec3<S> was treated as friend S instead.
friend Vec3<T> operator/(float scalar, const Vec3<T>& vec) {
return Vec3<T>(static_cast<T>(scalar / vec.x),
static_cast<T>(scalar / vec.y),