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;
}
Example #2
0
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));
}
Example #3
0
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));
}