Cylinder Anamorphosis (Anamorphic Projection on a Cylinder)

Cylinder Anamorphosis (Anamorphic Projection on a Cylinder)
Loading the math board and drawing, please wait…
2016-05-20 23:30
This example demonstrates how to project a plane drawing onto a cylinder surface, creating an anamorphic or distorted image. The core mathematical concepts involve 3D projection transformations, parameterization of cylindrical surfaces, and geometric correspondences between planes and curved surfaces. Construction highlights include using GeoGebra commands such as OrthogonalPlane, PointIn, Line, Ray, Circle, Cylinder, Mirror, Translate, Rotate, Locus, and LocusEquation to build the cylinder, project points, and trace their paths. The example is suitable for high school or university courses in solid geometry, analytic geometry, or computer graphics, helping students intuitively understand the mathematical principles behind non-planar projections and geometric constructions.

GeoGebra Commands & Parameters

  1. OrthogonalPlane(O, xAxis) → w
  2. PointIn(w) → H
  3. Line(A, xAxis) → f
  4. Point(f) → C
  5. Ray(A, C) → g
  6. Point(g) → B
  7. If(abs(x(B_f) - x(B)) ≤ abs(x(B_c) - x(B)), B_f, B_c) → B'
  8. Sequence(Segment[(x(A) + i, y(A)), (x(A) + i, y(A) + x(B') - x(A))], i, 0, x(B') - x(A), 1) → list1
  9. Circle((0, 0), r) → c
  10. Sequence(Segment[(x(A), y(A) + i), (x(B'), y(A) + i)], i, 0, x(B') - x(A), 1) → list2
  11. Mirror(list1, c) → list1'
  12. Mirror(list2, c) → list2'
  13. Cylinder(c, 24.735270934851805) → a, d, b
  14. Point(list1) → F_2
  15. Polygon(D, E, F_2) → poly1, f_1, d_1, e
  16. Point(poly1) → G
  17. Mirror(G, c) → G'
  18. LocusEquation(G', G) → i
  19. Locus(G', G) → loc1
  20. Point(d) → I
  21. Point(d) → J
  22. Point(d) → K
  23. LineBisector(I, J, d) → j
  24. LineBisector(J, K, d) → l
  25. Intersect(j, l) → L
  26. Intersect(c, xAxis) → M, N
  27. Point(list1) → P
  28. Vector(P, L) → u
  29. Translate(M, u) → M'
  30. Translate(N, u) → N'
  31. Polygon(M, N, N', M') → poly2, m, n_1, n', m'
  32. Sequence(Segment[(x(M) + i, 0, z(M)), (x(M) + i, 0, z(M) + m')], i, 0, m, m / n) → list3
  33. Sequence(Segment[(x(M), 0, z(M) + i), (x(N), 0, z(N) + i)], i, 0, m', m' / n) → list4
  34. Plane(M', N', N) → h
  35. PointIn(poly2) → Q
  36. PointIn(poly2) → R
  37. PointIn(poly2) → S
  38. Polygon(Q, S, R) → poly3, r_1, q, s
  39. Point(poly3) → T
  40. Segment(H, T) → p
  41. OrthogonalLine(H, xOyPlane) → t
  42. Intersect(t, xOyPlane) → U
  43. Plane(U, T, H) → o
  44. IntersectPath(o, a) → c_1
  45. Corner(c_1) → V, W, Z, A_1
  46. OrthogonalLine(T, t, o) → g_1
  47. Mirror(H, g_1) → H'
  48. Mirror(T, g_1) → T'
  49. Segment(H', T') → p'
  50. Line(T, H') → h_1
  51. Intersect(p, c_1) → C_1, D_1
  52. Plane(O, xOyPlane) → v
  53. Line(D_1, g_1) → i_1
  54. Line(D_1, h_1) → j_1
  55. Intersect(j_1, xOyPlane) → B_1
  56. PointIn(w) → E_1
  57. Locus(D_1, T) → loc3
  58. Locus(B_1, T) → loc4
  59. Circle(O, M, v) → e_1
  60. PointIn(h) → F
  61. Line(H, zAxis) → k_1
  62. Intersect(k_1, v) → G_1
  63. Plane(G_1, F, H) → a_1
  64. OrthogonalLine(F, k_1, a_1) → l_1
  65. IntersectPath(a_1, a) → p_1
  66. Corner(p_1) → H_1, I_1, J_1, K_1
  67. Line(F, H) → m_1
  68. Intersect(m_1, p_1) → L_1, M_1
  69. Line(L_1, l_1) → q_1
  70. Mirror(m_1, q_1) → s_1
  71. Intersect(s_1, v) → N_1