/* * Copyright (c) 2015 Tricoire Sebastien 3dsman@free.fr * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. * */ #include "OE_joincurve.h" #include #include #include #include #include OE_joincurve::OE_joincurve(OE_curve* curve1, OE_curve* curve2) { curves.push_back(curve1); curves.push_back(curve2); refresh(); needRefresh = true; } OE_joincurve::~OE_joincurve() { } /** \brief check if the curve is valid. */ bool OE_joincurve::check() { if (curves.size()) { for(unsigned i=0; icheck())) return false; } return true; } return false; } /** \brief refresh the discPts array. */ bool OE_joincurve::refresh() { if (check()) { pts.clear(); for(unsigned i=0; ipts.begin())/2.0); //pts.push_back((pts.end()+curves.at(i)->pts.begin())/2.0); if (pts.size()&&curves.at(i)->pts.size()) { pts.push_back((curves.at(i)->pts.at(0)-pts.at(pts.size()-1)) /3.0f+pts.at(pts.size()-1)); pts.push_back((curves.at(i)->pts.at(0)-pts.at(pts.size()-1))*2.0f /3.0f+pts.at(pts.size()-1)); } pts.insert(pts.end(), curves.at(i)->pts.begin(), curves.at(i)->pts.end()); } return true; } return false; }