I have difficulty understanding your initial post as well as your clarifying post. If you want to rotate you typically need a Rotation matrixR. You represent the point you want to rotate by a vector v and perform the multiplication R.v. This is fairly straightforward. CPAN is your friend: Math::VectorReal contains an example of rotating a vector with a rotation matrix.