// // Created by LEI XU on 4/11/19. // #include "Triangle.hpp" #include #include Triangle::Triangle() { v[0] << 0,0,0,1; v[1] << 0,0,0,1; v[2] << 0,0,0,1; color[0] << 0.0, 0.0, 0.0; color[1] << 0.0, 0.0, 0.0; color[2] << 0.0, 0.0, 0.0; tex_coords[0] << 0.0, 0.0; tex_coords[1] << 0.0, 0.0; tex_coords[2] << 0.0, 0.0; } void Triangle::setVertex(int ind, Vector4f ver){ v[ind] = ver; } void Triangle::setNormal(int ind, Vector3f n){ normal[ind] = n; } void Triangle::setColor(int ind, float r, float g, float b) { if((r<0.0) || (r>255.) || (g<0.0) || (g>255.) || (b<0.0) || (b>255.)) { fprintf(stderr, "ERROR! Invalid color values"); fflush(stderr); exit(-1); } color[ind] = Vector3f((float)r/255.,(float)g/255.,(float)b/255.); return; } void Triangle::setTexCoord(int ind, Vector2f uv) { tex_coords[ind] = uv; } std::array Triangle::toVector4() const { std::array res; std::transform(std::begin(v), std::end(v), res.begin(), [](auto& vec) { return Vector4f(vec.x(), vec.y(), vec.z(), 1.f); }); return res; } void Triangle::setNormals(const std::array& normals) { normal[0] = normals[0]; normal[1] = normals[1]; normal[2] = normals[2]; } void Triangle::setColors(const std::array& colors) { auto first_color = colors[0]; setColor(0, colors[0][0], colors[0][1], colors[0][2]); setColor(1, colors[1][0], colors[1][1], colors[1][2]); setColor(2, colors[2][0], colors[2][1], colors[2][2]); }