mirror of
https://github.com/kuhyx/WUT_Computer_Science.git
synced 2026-07-04 16:23:11 +02:00
* feat: load exr map * feat: scale and flip the hdr map * feat: added camera * feat: add simple slow but working photonmapping * feat: added cpp version of photonmapping * chore: extracted vector class to separate file * chore: split classes into separate files * chore: removed constant parameters from main * feat: added statistics to main cpp * feat: added statistic for time of execution
23 lines
948 B
C++
23 lines
948 B
C++
#ifndef VECTOR3_H
|
|
#define VECTOR3_H
|
|
|
|
#include <cmath>
|
|
|
|
class Vector3 {
|
|
public:
|
|
double x, y, z;
|
|
|
|
Vector3(double x_=0, double y_=0, double z_=0): x(x_), y(y_), z(z_) {}
|
|
|
|
Vector3 operator + (const Vector3& v) const { return Vector3(x+v.x, y+v.y, z+v.z); }
|
|
Vector3 operator - (const Vector3& v) const { return Vector3(x-v.x, y-v.y, z-v.z); }
|
|
Vector3 operator * (double scalar) const { return Vector3(x*scalar, y*scalar, z*scalar); }
|
|
Vector3 operator / (double scalar) const { return Vector3(x/scalar, y/scalar, z/scalar); }
|
|
Vector3 operator - () const { return Vector3(-x, -y, -z); }
|
|
Vector3 operator * (const Vector3& v) const { return Vector3(x*v.x, y*v.y, z*v.z); }
|
|
double dot(const Vector3& v) const { return x*v.x + y*v.y + z*v.z; }
|
|
double norm() const { return std::sqrt(x*x + y*y + z*z); }
|
|
Vector3 normalize() const { double n = norm(); return Vector3(x/n, y/n, z/n); }
|
|
};
|
|
|
|
#endif // VECTOR3_H
|