From 857395966ae33e4d41cfe42e4f1a05026cf7dd89 Mon Sep 17 00:00:00 2001 From: Jonathan Westhues Date: Sun, 1 Jun 2008 00:57:16 -0800 Subject: [PATCH] More use of ::From functions to simplify code. [git-p4: depot-paths = "//depot/solvespace/": change = 1764] --- entity.cpp | 31 +++++++------------------------ expr.cpp | 9 +++++++++ expr.h | 1 + 3 files changed, 17 insertions(+), 24 deletions(-) diff --git a/entity.cpp b/entity.cpp index 27060b7..c64e681 100644 --- a/entity.cpp +++ b/entity.cpp @@ -298,10 +298,7 @@ ExprQuaternion Entity::NormalGetExprs(void) { ExprQuaternion q; switch(type) { case NORMAL_IN_3D: - q.w = Expr::From(param[0]); - q.vx = Expr::From(param[1]); - q.vy = Expr::From(param[2]); - q.vz = Expr::From(param[3]); + q = ExprQuaternion::From(param[0], param[1], param[2], param[3]); break; case NORMAL_IN_2D: { @@ -316,11 +313,7 @@ ExprQuaternion Entity::NormalGetExprs(void) { case NORMAL_N_ROT: { ExprQuaternion orig = ExprQuaternion::From(numNormal); - - q.w = Expr::From(param[0]); - q.vx = Expr::From(param[1]); - q.vy = Expr::From(param[2]); - q.vz = Expr::From(param[3]); + q = ExprQuaternion::From(param[0], param[1], param[2], param[3]); q = q.Times(orig); break; @@ -491,26 +484,16 @@ ExprVector Entity::PointGetExprs(void) { break; } case POINT_N_TRANS: { - ExprVector orig = { - Expr::From(numPoint.x), - Expr::From(numPoint.y), - Expr::From(numPoint.z) }; - ExprVector trans; - trans.x = Expr::From(param[0]); - trans.y = Expr::From(param[1]); - trans.z = Expr::From(param[2]); + ExprVector orig = ExprVector::From(numPoint); + ExprVector trans = ExprVector::From(param[0], param[1], param[2]); r = orig.Plus(trans.ScaledBy(Expr::From(timesApplied))); break; } case POINT_N_ROT_TRANS: { ExprVector orig = ExprVector::From(numPoint); - ExprVector trans = - ExprVector::From(param[0], param[1], param[2]); - ExprQuaternion q = { - Expr::From(param[3]), - Expr::From(param[4]), - Expr::From(param[5]), - Expr::From(param[6]) }; + ExprVector trans = ExprVector::From(param[0], param[1], param[2]); + ExprQuaternion q = + ExprQuaternion::From(param[3], param[4], param[5], param[6]); orig = q.Rotate(orig); r = orig.Plus(trans); break; diff --git a/expr.cpp b/expr.cpp index c676cab..eed0ac7 100644 --- a/expr.cpp +++ b/expr.cpp @@ -77,6 +77,15 @@ Vector ExprVector::Eval(void) { return r; } +ExprQuaternion ExprQuaternion::From(hParam w, hParam vx, hParam vy, hParam vz) { + ExprQuaternion q; + q.w = Expr::From(w); + q.vx = Expr::From(vx); + q.vy = Expr::From(vy); + q.vz = Expr::From(vz); + return q; +} + ExprQuaternion ExprQuaternion::From(Expr *w, Expr *vx, Expr *vy, Expr *vz) { ExprQuaternion q; diff --git a/expr.h b/expr.h index 67d60e3..cb8ebf8 100644 --- a/expr.h +++ b/expr.h @@ -142,6 +142,7 @@ public: static ExprQuaternion From(Expr *w, Expr *vx, Expr *vy, Expr *vz); static ExprQuaternion From(Quaternion qn); + static ExprQuaternion From(hParam w, hParam vx, hParam vy, hParam vz); ExprVector RotationU(void); ExprVector RotationV(void);