Hi,
The surface you're working with and the methods you're investigating are really interesting topics. General suggestions I can think of:
You could experiment with different methods of generating the hyperbolic paraboloid,
splineHypar[a_, b_] := Array[{(*x*)#1,(*y*)#2,(*z*)#2^2/b^2 - #1^2/a^2} &, {3,(*refinement*)20}, {{-3, 3}, {-3, 3}}];
Graphics3D[{Opacity[0.5], BSplineSurface[splineHypar[1, 1]]}, Boxed -> False]
Use Manipulate
to play with the surface and the rotation parameter
Manipulate[
GeometricTransformation[#,
RotationTransform[\[Theta], {0, 0, 1}]] & /@
Graphics3D[{Opacity[0.5],
BSplineSurface[
splineHypar[a, b]]}], {\[Theta], -\[Pi], \[Pi], \[Pi]/20}, {a, 1,
2, 0.05}, {b(*a*), 1, 2, 0.05}]
If you want to do more things with Geometric/Rotation Transform, try combining multiple graphic objects,
Manipulate[
Show[{
(*car=*)Graphics[{
EdgeForm[Thick], White,
GeometricTransformation[
Rectangle[{#1, #2 - (#4 1)}, {#1 + (#4 3), #2 + (#4 1)}],
RotationTransform[#3, {#1 + (#4 1.5), #2}]],
GeometricTransformation[
Triangle[{{#1 + (#4 2), #2 + (#4 1)}, {#1 + (#4 2), #2 - (#4 \
1)}, {#1 + (#4 3), #2 }}], RotationTransform[#3, {#1 + (#4 1.5), #2}]]
}] &[p[[1]], p[[2]], \[Theta], 5],
RegionPlot@
TransformedRegion[
Polygon[{{p[[1]] + 15, p[[2]] - 5}, {p[[1]] + 15,
p[[2]] + 5}, {p[[1]] + 15 + #1,
p[[2]] + 5 + (#1/#2)}, {p[[1]] + 15 + #1,
p[[2]] - 5 - (#1/#2)}}],
RotationTransform[\[Theta], {p[[1]] + (15/2), p[[2]]}]] &[30,
10]
}, Axes -> True, PlotRange -> {{-50, 50}, {-50, 50}}],
{{\[Theta], 0, \[Theta]}, -\[Pi], \[Pi]}
]
Hope this helps,
Ben