transform: Standardised the Rx, Ry, Rz and Ra rotational tranformations
so that they operate in the conventional manner in a right-handed coordinate system: //- Rotational transformation tensor about the x-axis by omega radians // The rotation is defined in a right-handed coordinate system // i.e. clockwise with respect to the axis from -ve to +ve // (looking along the axis). inline tensor Rx(const scalar& omega) //- Rotational transformation tensor about the y-axis by omega radians // The rotation is defined in a right-handed coordinate system // i.e. clockwise with respect to the axis from -ve to +ve // (looking along the axis). inline tensor Ry(const scalar& omega) //- Rotational transformation tensor about the z-axis by omega radians // The rotation is defined in a right-handed coordinate system // i.e. clockwise with respect to the axis from -ve to +ve // (looking along the axis). inline tensor Rz(const scalar& omega) //- Rotational transformation tensor about axis a by omega radians // The rotation is defined in a right-handed coordinate system // i.e. clockwise with respect to the axis from -ve to +ve // (looking along the axis). inline tensor Ra(const vector& a, const scalar omega)
This commit is contained in:
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration | Website: https://openfoam.org
|
\\ / O peration | Website: https://openfoam.org
|
||||||
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -83,6 +83,9 @@ inline tensor rotationTensor
|
|||||||
|
|
||||||
|
|
||||||
//- Rotational transformation tensor about the x-axis by omega radians
|
//- Rotational transformation tensor about the x-axis by omega radians
|
||||||
|
// The rotation is defined in a right-handed coordinate system
|
||||||
|
// i.e. clockwise with respect to the axis from -ve to +ve
|
||||||
|
// (looking along the axis).
|
||||||
inline tensor Rx(const scalar& omega)
|
inline tensor Rx(const scalar& omega)
|
||||||
{
|
{
|
||||||
const scalar s = sin(omega);
|
const scalar s = sin(omega);
|
||||||
@ -90,41 +93,50 @@ inline tensor Rx(const scalar& omega)
|
|||||||
return tensor
|
return tensor
|
||||||
(
|
(
|
||||||
1, 0, 0,
|
1, 0, 0,
|
||||||
0, c, s,
|
0, c, -s,
|
||||||
0, -s, c
|
0, s, c
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//- Rotational transformation tensor about the y-axis by omega radians
|
//- Rotational transformation tensor about the y-axis by omega radians
|
||||||
|
// The rotation is defined in a right-handed coordinate system
|
||||||
|
// i.e. clockwise with respect to the axis from -ve to +ve
|
||||||
|
// (looking along the axis).
|
||||||
inline tensor Ry(const scalar& omega)
|
inline tensor Ry(const scalar& omega)
|
||||||
{
|
{
|
||||||
const scalar s = sin(omega);
|
const scalar s = sin(omega);
|
||||||
const scalar c = cos(omega);
|
const scalar c = cos(omega);
|
||||||
return tensor
|
return tensor
|
||||||
(
|
(
|
||||||
c, 0, -s,
|
c, 0, s,
|
||||||
0, 1, 0,
|
0, 1, 0,
|
||||||
s, 0, c
|
-s, 0, c
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//- Rotational transformation tensor about the z-axis by omega radians
|
//- Rotational transformation tensor about the z-axis by omega radians
|
||||||
|
// The rotation is defined in a right-handed coordinate system
|
||||||
|
// i.e. clockwise with respect to the axis from -ve to +ve
|
||||||
|
// (looking along the axis).
|
||||||
inline tensor Rz(const scalar& omega)
|
inline tensor Rz(const scalar& omega)
|
||||||
{
|
{
|
||||||
const scalar s = sin(omega);
|
const scalar s = sin(omega);
|
||||||
const scalar c = cos(omega);
|
const scalar c = cos(omega);
|
||||||
return tensor
|
return tensor
|
||||||
(
|
(
|
||||||
c, s, 0,
|
c, -s, 0,
|
||||||
-s, c, 0,
|
s, c, 0,
|
||||||
0, 0, 1
|
0, 0, 1
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//- Rotational transformation tensor about axis a by omega radians
|
//- Rotational transformation tensor about axis a by omega radians
|
||||||
|
// The rotation is defined in a right-handed coordinate system
|
||||||
|
// i.e. clockwise with respect to the axis from -ve to +ve
|
||||||
|
// (looking along the axis).
|
||||||
inline tensor Ra(const vector& a, const scalar omega)
|
inline tensor Ra(const vector& a, const scalar omega)
|
||||||
{
|
{
|
||||||
const scalar s = sin(omega);
|
const scalar s = sin(omega);
|
||||||
@ -133,15 +145,15 @@ inline tensor Ra(const vector& a, const scalar omega)
|
|||||||
return tensor
|
return tensor
|
||||||
(
|
(
|
||||||
sqr(a.x())*(1 - c) + c,
|
sqr(a.x())*(1 - c) + c,
|
||||||
a.y()*a.x()*(1 - c) + a.z()*s,
|
a.y()*a.x()*(1 - c) - a.z()*s,
|
||||||
a.x()*a.z()*(1 - c) - a.y()*s,
|
|
||||||
|
|
||||||
a.x()*a.y()*(1 - c) - a.z()*s,
|
|
||||||
sqr(a.y())*(1 - c) + c,
|
|
||||||
a.y()*a.z()*(1 - c) + a.x()*s,
|
|
||||||
|
|
||||||
a.x()*a.z()*(1 - c) + a.y()*s,
|
a.x()*a.z()*(1 - c) + a.y()*s,
|
||||||
|
|
||||||
|
a.x()*a.y()*(1 - c) + a.z()*s,
|
||||||
|
sqr(a.y())*(1 - c) + c,
|
||||||
a.y()*a.z()*(1 - c) - a.x()*s,
|
a.y()*a.z()*(1 - c) - a.x()*s,
|
||||||
|
|
||||||
|
a.x()*a.z()*(1 - c) - a.y()*s,
|
||||||
|
a.y()*a.z()*(1 - c) + a.x()*s,
|
||||||
sqr(a.z())*(1 - c) + c
|
sqr(a.z())*(1 - c) + c
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,7 +51,7 @@ vertices #codeStream
|
|||||||
// Rotate points around z-axis and append
|
// Rotate points around z-axis and append
|
||||||
for (label i = 0; i < 4; i++)
|
for (label i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
points.append(transform(Rz(-degToRad(i*$angle)), initPoints));
|
points.append(transform(Rz(degToRad(i*$angle)), initPoints));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Duplicate z points
|
// Duplicate z points
|
||||||
|
|||||||
@ -6,7 +6,7 @@ cd ${0%/*} || exit 1 # Run from this directory
|
|||||||
|
|
||||||
runApplication surfaceTransformPoints \
|
runApplication surfaceTransformPoints \
|
||||||
"translate=(-0.586 0 -0.156), \
|
"translate=(-0.586 0 -0.156), \
|
||||||
Ry=3.485, \
|
Ry=-3.485, \
|
||||||
translate=(0.586 0 0.156)" \
|
translate=(0.586 0 0.156)" \
|
||||||
constant/geometry/w3_orig.stl constant/geometry/w3.stl
|
constant/geometry/w3_orig.stl constant/geometry/w3.stl
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@ cd ${0%/*} || exit 1 # Run from this directory
|
|||||||
|
|
||||||
runApplication surfaceTransformPoints \
|
runApplication surfaceTransformPoints \
|
||||||
"translate=(-0.586 0 -0.156), \
|
"translate=(-0.586 0 -0.156), \
|
||||||
Ry=3.485, \
|
Ry=-3.485, \
|
||||||
translate=(0.586 0 0.156)" \
|
translate=(0.586 0 0.156)" \
|
||||||
constant/geometry/w3_orig.stl constant/geometry/w3.stl
|
constant/geometry/w3_orig.stl constant/geometry/w3.stl
|
||||||
|
|
||||||
|
|||||||
@ -56,7 +56,7 @@ vertices #codeStream
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Rotate points around z-axis
|
// Rotate points around z-axis
|
||||||
points = transform(Rz(-degToRad($angle)), points);
|
points = transform(Rz(degToRad($angle)), points);
|
||||||
|
|
||||||
// Append points 6 and 7
|
// Append points 6 and 7
|
||||||
points.append(points[0]); // pt 6
|
points.append(points[0]); // pt 6
|
||||||
|
|||||||
@ -56,7 +56,7 @@ vertices #codeStream
|
|||||||
// Rotate points around z-axis and append
|
// Rotate points around z-axis and append
|
||||||
for (label i = 0; i < 8; i++)
|
for (label i = 0; i < 8; i++)
|
||||||
{
|
{
|
||||||
points.append(transform(Rz(-degToRad(i*$angle)), initPoints));
|
points.append(transform(Rz(degToRad(i*$angle)), initPoints));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Duplicate z points
|
// Duplicate z points
|
||||||
|
|||||||
Reference in New Issue
Block a user