From 546e2c0243ccb5c118ac998544f764b9e472cac7 Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@esi-group.com> Date: Thu, 18 Aug 2022 11:43:18 +0200 Subject: [PATCH] BUG: incorrect order for output scaling (transformPoints, ...) - the output write scaling should be applied *after* undoing the effects of the specified rotation centre. Fixes #2566 ENH: update option names for transformPoints and surfaceTransformPoints - prefer '-auto-centre' and '-centre', but also accept the previous options '-auto-origin' and '-origin' as aliases. Changing to '-centre' avoids possible confusion with coordinate system origin(). --- .../transformPoints/transformPoints.C | 43 ++++++++++--------- .../surfaceTransformPoints.C | 39 +++++++++-------- 2 files changed, 44 insertions(+), 38 deletions(-) diff --git a/applications/utilities/mesh/manipulation/transformPoints/transformPoints.C b/applications/utilities/mesh/manipulation/transformPoints/transformPoints.C index 29de0f2f539..07303e19f01 100644 --- a/applications/utilities/mesh/manipulation/transformPoints/transformPoints.C +++ b/applications/utilities/mesh/manipulation/transformPoints/transformPoints.C @@ -53,8 +53,8 @@ Usage -rotate-angle (vector angle) Rotate angle degrees about vector axis. - or -yawPitchRoll (yawdegrees pitchdegrees rolldegrees) - or -rollPitchYaw (rolldegrees pitchdegrees yawdegrees) + or -yawPitchRoll : (yaw pitch roll) degrees + or -rollPitchYaw : (roll pitch yaw) degrees -scale scalar|vector Scale the points by the given scalar or vector on output. @@ -251,15 +251,18 @@ int main(int argc, char *argv[]) ); argList::addBoolOption ( - "auto-origin", - "Use bounding box centre as origin for rotations" + "auto-centre", + "Use bounding box centre as centre for rotations" ); argList::addOption ( - "origin", + "centre", "point", - "Use specified <point> as origin for rotations" + "Use specified <point> as centre for rotations" ); + argList::addOptionCompat("auto-centre", {"auto-origin", 2206}); + argList::addOptionCompat("centre", {"origin", 2206}); + argList::addOption ( "rotate", @@ -390,18 +393,18 @@ int main(int argc, char *argv[]) points += v; } - vector origin; - bool useOrigin = args.readIfPresent("origin", origin); - if (args.found("auto-origin") && !useOrigin) + vector rotationCentre; + bool useRotationCentre = args.readIfPresent("centre", rotationCentre); + if (args.found("auto-centre") && !useRotationCentre) { - useOrigin = true; - origin = boundBox(points).centre(); + useRotationCentre = true; + rotationCentre = boundBox(points).centre(); } - if (useOrigin) + if (useRotationCentre) { - Info<< "Set origin for rotations to " << origin << endl; - points -= origin; + Info<< "Set centre of rotation to " << rotationCentre << endl; + points -= rotationCentre; } if (args.found("rotate")) @@ -482,15 +485,15 @@ int main(int argc, char *argv[]) } } - // Output scaling - applyScaling(points, getScalingOpt("scale", args)); - - if (useOrigin) + if (useRotationCentre) { - Info<< "Unset origin for rotations from " << origin << endl; - points += origin; + Info<< "Unset centre of rotation from " << rotationCentre << endl; + points += rotationCentre; } + // Output scaling + applyScaling(points, getScalingOpt("scale", args)); + // Set the precision of the points data to 10 IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision())); diff --git a/applications/utilities/surface/surfaceTransformPoints/surfaceTransformPoints.C b/applications/utilities/surface/surfaceTransformPoints/surfaceTransformPoints.C index 85948f878d6..7c302a3bee9 100644 --- a/applications/utilities/surface/surfaceTransformPoints/surfaceTransformPoints.C +++ b/applications/utilities/surface/surfaceTransformPoints/surfaceTransformPoints.C @@ -188,15 +188,18 @@ int main(int argc, char *argv[]) ); argList::addBoolOption ( - "auto-origin", - "Use bounding box centre as origin for rotations" + "auto-centre", + "Use bounding box centre as centre for rotations" ); argList::addOption ( - "origin", + "centre", "point", - "Use specified <point> as origin for rotations" + "Use specified <point> as centre for rotations" ); + argList::addOptionCompat("auto-centre", {"auto-origin", 2206}); + argList::addOptionCompat("centre", {"origin", 2206}); + argList::addOption ( "rotate", @@ -334,18 +337,18 @@ int main(int argc, char *argv[]) points += v; } - vector origin; - bool useOrigin = args.readIfPresent("origin", origin); - if (args.found("auto-origin") && !useOrigin) + vector rotationCentre; + bool useRotationCentre = args.readIfPresent("centre", rotationCentre); + if (args.found("auto-centre") && !useRotationCentre) { - useOrigin = true; - origin = boundBox(points).centre(); + useRotationCentre = true; + rotationCentre = boundBox(points).centre(); } - if (useOrigin) + if (useRotationCentre) { - Info<< "Set origin for rotations to " << origin << endl; - points -= origin; + Info<< "Set centre of rotation to " << rotationCentre << endl; + points -= rotationCentre; } if (args.found("rotate")) @@ -406,15 +409,15 @@ int main(int argc, char *argv[]) points = transform(rot, points); } - // Output scaling - applyScaling(points, getScalingOpt("write-scale", args)); - - if (useOrigin) + if (useRotationCentre) { - Info<< "Unset origin for rotations from " << origin << endl; - points += origin; + Info<< "Unset centre of rotation from " << rotationCentre << endl; + points += rotationCentre; } + // Output scaling + applyScaling(points, getScalingOpt("write-scale", args)); + surf1.movePoints(points); surf1.write(exportName, writeFileType); -- GitLab