예제 #1
0
/*!
 * \brief Ellipse::setUnknownParameters
 * \param parameters
 */
void Ellipse::setUnknownParameters(const QMap<GeometryParameters, double> &parameters){

    //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);

}
예제 #2
0
/*!
 * \brief Torus::setUnknownParameters
 * \param parameters
 */
void Torus::setUnknownParameters(const QMap<GeometryParameters, double> &parameters){

    //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);

}
예제 #3
0
/*!
 * \brief Line::setUnknownParameters
 * \param parameters
 */
void Line::setUnknownParameters(const QMap<GeometryParameters, double> &parameters){

    //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);

}
예제 #4
0
/*!
 * \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]);
    }
}