Ejemplo n.º 1
0
Point2d Point2d::WithMagnitude(double v) {
    double m = Magnitude();
    if(m < 1e-20) {
        dbp("!!! WithMagnitude() of zero vector");
        Point2d r = { v, 0 };
        return r;
    } else {
        return ScaledBy(v/m);
    }
}
Ejemplo n.º 2
0
Vector Vector::WithMagnitude(double v) {
    double m = Magnitude();
    if(EXACT(m == 0)) {
        // We can do a zero vector with zero magnitude, but not any other cases.
        if(fabs(v) > 1e-100) {
            dbp("Vector::WithMagnitude(%g) of zero vector!", v);
        }
        return From(0, 0, 0);
    } else {
        return ScaledBy(v/m);
    }
}
Ejemplo n.º 3
0
Quaternion Quaternion::WithMagnitude(double s) {
    return ScaledBy(s/Magnitude());
}
Ejemplo n.º 4
0
ExprVector ExprVector::WithMagnitude(Expr *s) {
    Expr *m = Magnitude();
    return ScaledBy(s->Div(m));
}