Blame model.h

8ee194
8ee194
#ifndef MODEL_H
8ee194
#define MODEL_H
8ee194
8ee194
8ee194
#include <vector></vector>
8ee194
8ee194
#include "geometry.h"
8ee194
8ee194
8ee194
class Triangle {
8ee194
public:
8ee194
    Vector3 vertices[3];
8ee194
    Vector3 normal;
e31ea0
e31ea0
    void normalize()
e31ea0
        { normal = (vertices[2] - vertices[0]).cross(vertices[1] - vertices[0]).norm(); }
e31ea0
    bool check(Real precision) const
e31ea0
        { return (vertices[2] - vertices[0]).cross(vertices[1] - vertices[0]).len_sqr() > precision*precision; }
8ee194
};
8ee194
8ee194
typedef std::vector<triangle> TriangleList;</triangle>
8ee194
8ee194
class Model {
8ee194
public:
8ee194
    Vector4 color;
8ee194
    TriangleList triangles;
8ee194
    
8ee194
    Model(const Vector4 &color = Vector4(0.5, 0.5, 0.5, 0.5)):
8ee194
        color(color) { }
8ee194
    
e31ea0
    void normalize();
e31ea0
    void transform(const Matrix4 &matrix);
8ee194
    void draw() const;
8ee194
};
8ee194
8ee194
#endif
8ee194