// transform input point pt1, (rotate "aX, aZ" and move to "center") public static void Transform(Mesh3D model, Point3D center, double aX, double aZ) { var angleX = Math.PI * aX / 180; var angleZ = Math.PI * aZ / 180; var nVertNo = model.GetVertexNo(); for (var i = 0; i < nVertNo; i++) { var pt1 = model.GetPoint(i); // rotate from z-axis var x2 = pt1.X * Math.Cos(angleZ) + pt1.Z * Math.Sin(angleZ); var y2 = pt1.Y; var z2 = -pt1.X * Math.Sin(angleZ) + pt1.Z * Math.Cos(angleZ); var x3 = center.X + x2 * Math.Cos(angleX) - y2 * Math.Sin(angleX); var y3 = center.Y + x2 * Math.Sin(angleX) + y2 * Math.Cos(angleX); var z3 = center.Z + z2; model.SetPoint(i, x3, y3, z3); } }