std::vector<comVec3> lin_interpolation_l2p(glm::vec4 start_ver, glm::vec4 end_ver, float w){ std::vector<comVec3> points; std::vector<comVec3>::iterator it; if ((w>start_ver.w && w<end_ver.w) || (w<start_ver.w && w>end_ver.w)){ float rel = (w-start_ver.w)/(end_ver.w-start_ver.w); points.insert(it, comVec3(glm::vec3( (end_ver.x - start_ver.x)*rel+start_ver.x, (end_ver.y - start_ver.y)*rel+start_ver.y, (end_ver.z - start_ver.z)*rel+start_ver.z) )); } if (start_ver.w == w) points.insert(it, comVec3(glm::vec3(start_ver))); if (end_ver.w == w) points.insert(it, comVec3(glm::vec3(end_ver))); return points; }
comVec3 comVec3::operator * (const comVec3& r) const{ return comVec3(glm::vec3( content.y*r.content.z-r.content.y*content.z, content.z*r.content.x-r.content.z*content.x, content.x*r.content.y-r.content.x*content.y)); }
comVec3 comVec3::operator- (const comVec3& r) const{ return comVec3(glm::vec3(content.x-r.content.x, content.y-r.content.y, content.z-r.content.z)); }