# New transformation option for utility: transformPoints

 Register Blogs Members List Search Today's Posts Mark Forums Read

 January 13, 2012, 18:02 New transformation option for utility: transformPoints #1 Senior Member   Philippose Rajan Join Date: Mar 2009 Location: Germany Posts: 530 Rep Power: 16 Hello and a Good Evening, Today I had the need to rotate my mesh along a specific axis, which does not pass through the origin..... an arbitrary axis defined by two points. As far as I can see, none of the rotation transforms in the mesh utility: "transformPoints" allows this kind of a rotation about an arbitrary line..... or am I wrong? In order to achieve my requirement, I added on one more command line option to transformPoints: "-rotateAlongLine", which allows the mesh to be rotated along any arbitrary axis which does not need to pass through the origin, and is defined by: 1. A point which lies on the axis P1(x,y,z) 2. A direction vector which defines the axis, which would typically by P2 - P1 (where P2 is another point on the line which defines the axis) 3. The required rotation angle (in degrees) Hence, the new command-line option looks like this: Code: `transformPoints -rotateAboutLine "(0 -0.05 0) (1 1 0) 45"` The above command would rotate the mesh about an axis which passes through the point P1(0,-0.05,0) and has the direction vector (1,1,0) by an angle of 45 degrees. ----------- The implementation of this option is as follows: 1. Translate the mesh such that the given point becomes the origin of the mesh....: Code: `points -= pointOnLine;` 2. Create a Rodrigues Rotation tensor using the specified direction vector and the rotation angle, and transform the points: Code: ```tensor T = RodriguesRotation(dirVector, rotationAngle); points = transform(T, points);``` 3. Shift the mesh back to the original location: Code: `points += pointOnLine;` It would be great if someone could add this to the Git repository of the OpenFOAM-1.6-ext project....? Unless this kind of operation is already possible (without having do it manually by using three calls to transformPoints i.e. :-)!) If required, I can put up a zipped copy of the modified "transformPoints" utility. Philippose wyldckat and Jhoanse87 like this.