/*! * \brief Ellipse::setUnknownParameters * \param parameters */ void Ellipse::setUnknownParameters(const QMap<GeometryParameters, double> ¶meters){ //get current parameters OiVec position = this->center.getVector(); OiVec directionA = this->normal.getVector(); OiVec directionB = this->semiMajorAxis.getVector(); double a = this->a; double b = this->b; //update parameters QList<GeometryParameters> keys = parameters.keys(); foreach(const GeometryParameters &key, keys){ switch(key){ case eUnknownX: position.setAt(0, parameters.value(eUnknownX)); break; case eUnknownY: position.setAt(1, parameters.value(eUnknownY)); break; case eUnknownZ: position.setAt(2, parameters.value(eUnknownZ)); break; case eUnknownPrimaryI: directionA.setAt(0, parameters.value(eUnknownPrimaryI)); break; case eUnknownPrimaryJ: directionA.setAt(1, parameters.value(eUnknownPrimaryJ)); break; case eUnknownPrimaryK: directionA.setAt(2, parameters.value(eUnknownPrimaryK)); break; case eUnknownA: a = parameters.value(eUnknownA); break; case eUnknownB: b = parameters.value(eUnknownB); break; case eUnknownSecondaryI: directionB.setAt(0, parameters.value(eUnknownSecondaryI)); break; case eUnknownSecondaryJ: directionB.setAt(1, parameters.value(eUnknownSecondaryJ)); break; case eUnknownSecondaryK: directionB.setAt(2, parameters.value(eUnknownSecondaryK)); break; } } //update ellipse definition directionA.normalize(); directionB.normalize(); Position ellipsePosition(position); Direction ellipseDirectionA(directionA); Direction ellipseDirectionB(directionB); this->setEllipse(ellipsePosition, ellipseDirectionA, a, b, ellipseDirectionB); }
/*! * \brief Torus::setUnknownParameters * \param parameters */ void Torus::setUnknownParameters(const QMap<GeometryParameters, double> ¶meters){ //get current parameters OiVec position = this->center.getVector(); OiVec direction = this->normal.getVector(); double radiusA = this->radiusA.getRadius(); double radiusB = this->radiusB.getRadius(); //update parameters QList<GeometryParameters> keys = parameters.keys(); foreach(const GeometryParameters &key, keys){ switch(key){ case eUnknownX: position.setAt(0, parameters.value(eUnknownX)); break; case eUnknownY: position.setAt(1, parameters.value(eUnknownY)); break; case eUnknownZ: position.setAt(2, parameters.value(eUnknownZ)); break; case eUnknownPrimaryI: direction.setAt(0, parameters.value(eUnknownPrimaryI)); break; case eUnknownPrimaryJ: direction.setAt(1, parameters.value(eUnknownPrimaryJ)); break; case eUnknownPrimaryK: direction.setAt(2, parameters.value(eUnknownPrimaryK)); break; case eUnknownRadiusA: radiusA = parameters.value(eUnknownRadiusA); break; case eUnknownRadiusB: radiusB = parameters.value(eUnknownRadiusA); break; } } //update torus definition direction.normalize(); Position torusPosition(position); Direction torusDirection(direction); Radius torusRadiusA(radiusA); Radius torusRadiusB(radiusB); this->setTorus(torusPosition, torusDirection, torusRadiusA, torusRadiusB); }
/*! * \brief Line::setUnknownParameters * \param parameters */ void Line::setUnknownParameters(const QMap<GeometryParameters, double> ¶meters){ //get current parameters OiVec position = this->xyz.getVector(); OiVec direction = this->axis.getVector(); //update parameters QList<GeometryParameters> keys = parameters.keys(); foreach(const GeometryParameters &key, keys){ switch(key){ case eUnknownX: position.setAt(0, parameters.value(eUnknownX)); break; case eUnknownY: position.setAt(1, parameters.value(eUnknownY)); break; case eUnknownZ: position.setAt(2, parameters.value(eUnknownZ)); break; case eUnknownPrimaryI: direction.setAt(0, parameters.value(eUnknownPrimaryI)); break; case eUnknownPrimaryJ: direction.setAt(1, parameters.value(eUnknownPrimaryJ)); break; case eUnknownPrimaryK: direction.setAt(2, parameters.value(eUnknownPrimaryK)); break; } } //update line definition direction.normalize(); Position linePosition(position); Direction lineDirection(direction); this->setLine(linePosition, lineDirection); }
/*! * \brief LAArmadillo::arma2OiVec * \param result * \param v */ void LAArmadillo::arma2OiVec(OiVec &result, const arma::vec &v){ for(int i = 0; i < v.n_rows; i++){ result.setAt(i, v[i]); } }