#pragma once #include "types.h" #include #include void calculateVertexNormals(const vec3v_t &positions, uvec3v_t &indices, vec3v_t &normals); void calculateFaceNormals(const vec3v_t &positions, uvec3v_t &indices, vec3v_t &normals); void findEdges(const vec3v_t &positions, const uvec3v_t &indices, uvec4v_t &edges); //void createPatches(const vec3v_t &positions, const uvec3v_t &indices, // const uvec4v_t &edges, vec3v_t &oPositions, uvec3v_t &oIndices, // uvec4v_t &oEdges, uintv_t &patches, float threshold); void moveToMean(vec3v_t &positions); void smooth(vec3v_t &positions, const uvec3v_t &indices); void saveAttrib(std::ostream &out, const char *prefix, vec3v_t &elements); void saveAttrib(std::ostream &out, const char *prefix, vec2v_t &elements); void saveFaces(std::ostream &out, const uvec3v_t &indicess, size_t attributes); void findAdjacent(const uvec4v_t &edges, size_t nFaces, uvec3v_t &adjacents); void computeTangentBasis(vec3v_t & vertices, vec2v_t & texcoords, vec3v_t & normals, vec3v_t & tangents, vec3v_t & bitangents); void createPatches(const vec3v_t &positions, const uvec3v_t &indices, const vec3v_t &faceNormals, const uvec3v_t &adjacents, vec3v_t &oPositions, uvec3v_t &oIndices, uintv_t &patches, float threshold);