#include "../Domain/SimploidPoint.h" #include "math.h" #include #include namespace Domain { FILE* SimploidPoint::datafp; SimploidPoint::SimploidPoint(int order) { this->order = order; this->type = new int[order]; this->coord = new SimplexPoint*[order]; } SimploidPoint::~SimploidPoint() { } void SimploidPoint::setCoord(int coord, SimplexPoint* value) { this->coord[coord] = value; } SimploidPoint* SimploidPoint::addPrefix(SimplexPoint* p) { SimploidPoint* newp; int i; newp = new SimploidPoint(this->order+1); for(i=0; i<= this->order;i++) { newp->coord[i+1] = this->coord[i]; newp->type[i+1] = this->type[i]; } newp->coord[0]=p; newp->type[0] = p->dim; return newp; } std::vector SimploidPoint::addPrefix(SimplexPoint* p, std::vector v,std::vector acum) { std::vector::iterator iter; SimploidPoint* tmp; for(iter=v.begin();iter!= v.end();iter++) { //(*iter)->print(); //if( ((*iter)->sum() + p) <= 1 ) { tmp = (*iter)->addPrefix(p); acum.push_back( tmp ); //tmp->print(); } } return acum; } void SimploidPoint::print() { int i; fprintf(SimploidPoint::datafp,"["); for(i=0;i < this->order ; i++) this->coord[i]->print(SimploidPoint::datafp); fprintf(SimploidPoint::datafp,"]\n"); } void SimploidPoint::print(FILE* fp) { int i; fprintf(fp,"["); for(i=0;i < this->order ; i++) this->coord[i]->print(fp); fprintf(fp,"]\n"); } SimploidPoint* SimploidPoint::fromSimplexPoint(SimplexPoint* p) { SimploidPoint *newp = new SimploidPoint(1); newp->type[0] = p->dim; newp->coord[0] = p; return newp; } std::vector SimploidPoint::fromSimplexPointVector(std::vector v) { std::vector acum; std::vector::iterator iter; for(iter=v.begin();iter!=v.end();iter++) acum.push_back( SimploidPoint::fromSimplexPoint((*iter)) ); return acum; } std::vector SimploidPoint::domainPoints(int order, int* type,int n) { int i; std::vector v,acum; std::vector::iterator iter; std::vector v2; std::vector::iterator iter2; v = SimploidPoint::SimploidPoint::fromSimplexPointVector( SimplexPoint::domainPoints(type[0],n) ); //for(iter=v.begin();iter!= v.end();iter++) // (*iter)->print(stderr); for(i=1; iextendPoint2Simplex()); return v; } }