Klein Bottle with Unit Normal Vectors

Klein Bottle with Unit Normal Vectors
Loading the math board and drawing, please wait…
2019-10-31 19:57
This example demonstrates the visualization of a Klein bottle surface and its unit normal vectors. Core mathematical concepts include vectors, surfaces, normal vectors, and differential geometry. Construction highlights from the GeoGebra command summary involve commands like Surface, Derivative, If, Translate, Mod, and objects such as Ay, Ax, c, b, a, size, H1, G1, F1, Klein1, etc. It is suitable for high school and above students to understand the computation and visualization of surface normals, serving as a valuable resource for learning vector calculus and geometric modeling.

GeoGebra Commands & Parameters

  1. Surface(F1(u, v), G1(u, v), H1(u, v), u, π, (2 * π), v, 0, (2 * π)) → Klein1
  2. Surface(F0(u, v), G0(u, v), H0(u, v), u, 0, π, v, 0, (2 * π)) → Klein0
  3. Derivative(F0, x) → dF0x
  4. Derivative(F0, y) → dF0y
  5. Derivative(G0, x) → dG0x
  6. Derivative(G0, y) → dG0y
  7. Derivative(H0, x) → dH0x
  8. Derivative(H0, y) → dH0y
  9. Derivative(F1, x) → dF1x
  10. Derivative(F1, y) → dF1y
  11. Derivative(G1, x) → dG1x
  12. Derivative(G1, y) → dG1y
  13. Derivative(H1, x) → dH1x
  14. Derivative(H1, y) → dH1y
  15. If(Ax < π, (uN0x(Ax, Ay), uN0y(Ax, Ay), uN0z(Ax, Ay)), If[Ax < (2 * π), (uN1x(Ax, Ay), uN1y(Ax, Ay), uN1z(Ax, Ay)), If[Ax < (3 * π), ((-uN0x(Ax, Ay)), (-uN0y(Ax, Ay)), (-uN0z(Ax, Ay))), ((-uN1x(Ax, Ay)), (-uN1y(Ax, Ay)), (-uN1z(Ax, Ay)))]]) → C
  16. If(Ax < π, Klein0(Ax, Ay), Klein1(Ax, Ay)) → A
  17. Translate(Vector[(0, 0, 0), C], A) → u
  18. Mod((4 * π / n) + Ax, (4 * π)) → A1
  19. Mod((8 * π / n) + Ax, (4 * π)) → A2
  20. Mod((12 * π / n) + Ax, (4 * π)) → A3
  21. Mod((16 * π / n) + Ax, (4 * π)) → A4
  22. Mod((20 * π / n) + Ax, (4 * π)) → A5
  23. If(A1 < π, Klein0(A1, π / 2), Klein1(A1, π / 2)) → B1
  24. If(A2 < π, Klein0(A2, π / 2), Klein1(A2, π / 2)) → B2
  25. If(A3 < π, Klein0(A3, π / 2), Klein1(A3, π / 2)) → B3
  26. If(A4 < π, Klein0(A4, π / 2), Klein1(A4, π / 2)) → B4
  27. If(A5 < π, Klein0(A5, π / 2), Klein1(A5, π / 2)) → B5
  28. If(A1 < π, (uN0x(A1, π / 2), uN0y(A1, π / 2), uN0z(A1, π / 2)), If[A1 < (2 * π), (uN1x(A1, π / 2), uN1y(A1, π / 2), uN1z(A1, π / 2)), If[A1 < (3 * π), ((-uN0x(A1, π / 2)), (-uN0y(A1, π / 2)), (-uN0z(A1, π / 2))), ((-uN1x(A1, π / 2)), (-uN1y(A1, π / 2)), (-uN1z(A1, π / 2)))]]) → C1
  29. If(A2 < π, (uN0x(A2, π / 2), uN0y(A2, π / 2), uN0z(A2, π / 2)), If[A2 < (2 * π), (uN1x(A2, π / 2), uN1y(A2, π / 2), uN1z(A2, π / 2)), If[A2 < (3 * π), ((-uN0x(A2, π / 2)), (-uN0y(A2, π / 2)), (-uN0z(A2, π / 2))), ((-uN1x(A2, π / 2)), (-uN1y(A2, π / 2)), (-uN1z(A2, π / 2)))]]) → C2
  30. If(A3 < π, (uN0x(A3, π / 2), uN0y(A3, π / 2), uN0z(A3, π / 2)), If[A3 < (2 * π), (uN1x(A3, π / 2), uN1y(A3, π / 2), uN1z(A3, π / 2)), If[A3 < (3 * π), ((-uN0x(A3, π / 2)), (-uN0y(A3, π / 2)), (-uN0z(A3, π / 2))), ((-uN1x(A3, π / 2)), (-uN1y(A3, π / 2)), (-uN1z(A3, π / 2)))]]) → C3
  31. If(A4 < π, (uN0x(A4, π / 2), uN0y(A4, π / 2), uN0z(A4, π / 2)), If[A4 < (2 * π), (uN1x(A4, π / 2), uN1y(A4, π / 2), uN1z(A4, π / 2)), If[A4 < (3 * π), ((-uN0x(A4, π / 2)), (-uN0y(A4, π / 2)), (-uN0z(A4, π / 2))), ((-uN1x(A4, π / 2)), (-uN1y(A4, π / 2)), (-uN1z(A4, π / 2)))]]) → C4
  32. If(A5 < π, (uN0x(A5, π / 2), uN0y(A5, π / 2), uN0z(A5, π / 2)), If[A5 < (2 * π), (uN1x(A5, π / 2), uN1y(A5, π / 2), uN1z(A5, π / 2)), If[A5 < (3 * π), ((-uN0x(A5, π / 2)), (-uN0y(A5, π / 2)), (-uN0z(A5, π / 2))), ((-uN1x(A5, π / 2)), (-uN1y(A5, π / 2)), (-uN1z(A5, π / 2)))]]) → C5
  33. Translate(Vector[(0, 0, 0), C1], B1) → D1
  34. Translate(Vector[(0, 0, 0), C2], B2) → D2
  35. Translate(Vector[(0, 0, 0), C3], B3) → D3
  36. Translate(Vector[(0, 0, 0), C4], B4) → D4
  37. Translate(Vector[(0, 0, 0), C5], B5) → D5
  38. Mod((24 * π / n) + Ax, (4 * π)) → A6
  39. Mod((28 * π / n) + Ax, (4 * π)) → A7
  40. Mod((32 * π / n) + Ax, (4 * π)) → A8
  41. Mod((36 * π / n) + Ax, (4 * π)) → A9
  42. Mod((40 * π / n) + Ax, (4 * π)) → A10
  43. Mod((44 * π / n) + Ax, (4 * π)) → A11
  44. Mod((48 * π / n) + Ax, (4 * π)) → A12
  45. Mod((52 * π / n) + Ax, (4 * π)) → A13
  46. Mod((56 * π / n) + Ax, (4 * π)) → A14
  47. Mod((60 * π / n) + Ax, (4 * π)) → A15
  48. Mod((64 * π / n) + Ax, (4 * π)) → A16
  49. Mod((68 * π / n) + Ax, (4 * π)) → A17
  50. Mod((72 * π / n) + Ax, (4 * π)) → A18
  51. Mod((76 * π / n) + Ax, (4 * π)) → A19
  52. Mod((80 * π / n) + Ax, (4 * π)) → A20
  53. Mod((84 * π / n) + Ax, (4 * π)) → A21
  54. Mod((88 * π / n) + Ax, (4 * π)) → A22
  55. Mod((92 * π / n) + Ax, (4 * π)) → A23
  56. Mod((96 * π / n) + Ax, (4 * π)) → A24
  57. Mod((100 * π / n) + Ax, (4 * π)) → A25
  58. If(A6 < π, Klein0(A6, π / 2), Klein1(A6, π / 2)) → B6
  59. If(A7 < π, Klein0(A7, π / 2), Klein1(A7, π / 2)) → B7
  60. If(A8 < π, Klein0(A8, π / 2), Klein1(A8, π / 2)) → B8
  61. If(A9 < π, Klein0(A9, π / 2), Klein1(A9, π / 2)) → B9
  62. If(A10 < π, Klein0(A10, π / 2), Klein1(A10, π / 2)) → B10
  63. If(A11 < π, Klein0(A11, π / 2), Klein1(A11, π / 2)) → B11
  64. If(A12 < π, Klein0(A12, π / 2), Klein1(A12, π / 2)) → B12
  65. If(A13 < π, Klein0(A13, π / 2), Klein1(A13, π / 2)) → B13
  66. If(A14 < π, Klein0(A14, π / 2), Klein1(A14, π / 2)) → B14
  67. If(A15 < π, Klein0(A15, π / 2), Klein1(A15, π / 2)) → B15
  68. If(A16 < π, Klein0(A16, π / 2), Klein1(A16, π / 2)) → B16
  69. If(A17 < π, Klein0(A17, π / 2), Klein1(A17, π / 2)) → B17
  70. If(A18 < π, Klein0(A18, π / 2), Klein1(A18, π / 2)) → B18
  71. If(A19 < π, Klein0(A19, π / 2), Klein1(A19, π / 2)) → B19
  72. If(A20 < π, Klein0(A20, π / 2), Klein1(A20, π / 2)) → B20
  73. If(A21 < π, Klein0(A21, π / 2), Klein1(A21, π / 2)) → B21
  74. If(A22 < π, Klein0(A22, π / 2), Klein1(A22, π / 2)) → B22
  75. If(A23 < π, Klein0(A23, π / 2), Klein1(A23, π / 2)) → B23
  76. If(A24 < π, Klein0(A24, π / 2), Klein1(A24, π / 2)) → B24
  77. If(A25 < π, Klein0(A25, π / 2), Klein1(A25, π / 2)) → B25
  78. If(A6 < π, (uN0x(A6, π / 2), uN0y(A6, π / 2), uN0z(A6, π / 2)), If[A6 < (2 * π), (uN1x(A6, π / 2), uN1y(A6, π / 2), uN1z(A6, π / 2)), If[A6 < (3 * π), ((-uN0x(A6, π / 2)), (-uN0y(A6, π / 2)), (-uN0z(A6, π / 2))), ((-uN1x(A6, π / 2)), (-uN1y(A6, π / 2)), (-uN1z(A6, π / 2)))]]) → C6
  79. If(A7 < π, (uN0x(A7, π / 2), uN0y(A7, π / 2), uN0z(A7, π / 2)), If[A7 < (2 * π), (uN1x(A7, π / 2), uN1y(A7, π / 2), uN1z(A7, π / 2)), If[A7 < (3 * π), ((-uN0x(A7, π / 2)), (-uN0y(A7, π / 2)), (-uN0z(A7, π / 2))), ((-uN1x(A7, π / 2)), (-uN1y(A7, π / 2)), (-uN1z(A7, π / 2)))]]) → C7
  80. If(A8 < π, (uN0x(A8, π / 2), uN0y(A8, π / 2), uN0z(A8, π / 2)), If[A8 < (2 * π), (uN1x(A8, π / 2), uN1y(A8, π / 2), uN1z(A8, π / 2)), If[A8 < (3 * π), ((-uN0x(A8, π / 2)), (-uN0y(A8, π / 2)), (-uN0z(A8, π / 2))), ((-uN1x(A8, π / 2)), (-uN1y(A8, π / 2)), (-uN1z(A8, π / 2)))]]) → C8
  81. If(A9 < π, (uN0x(A9, π / 2), uN0y(A9, π / 2), uN0z(A9, π / 2)), If[A9 < (2 * π), (uN1x(A9, π / 2), uN1y(A9, π / 2), uN1z(A9, π / 2)), If[A9 < (3 * π), ((-uN0x(A9, π / 2)), (-uN0y(A9, π / 2)), (-uN0z(A9, π / 2))), ((-uN1x(A9, π / 2)), (-uN1y(A9, π / 2)), (-uN1z(A9, π / 2)))]]) → C9
  82. If(A10 < π, (uN0x(A10, π / 2), uN0y(A10, π / 2), uN0z(A10, π / 2)), If[A10 < (2 * π), (uN1x(A10, π / 2), uN1y(A10, π / 2), uN1z(A10, π / 2)), If[A10 < (3 * π), ((-uN0x(A10, π / 2)), (-uN0y(A10, π / 2)), (-uN0z(A10, π / 2))), ((-uN1x(A10, π / 2)), (-uN1y(A10, π / 2)), (-uN1z(A10, π / 2)))]]) → C10
  83. If(A11 < π, (uN0x(A11, π / 2), uN0y(A11, π / 2), uN0z(A11, π / 2)), If[A11 < (2 * π), (uN1x(A11, π / 2), uN1y(A11, π / 2), uN1z(A11, π / 2)), If[A11 < (3 * π), ((-uN0x(A11, π / 2)), (-uN0y(A11, π / 2)), (-uN0z(A11, π / 2))), ((-uN1x(A11, π / 2)), (-uN1y(A11, π / 2)), (-uN1z(A11, π / 2)))]]) → C11
  84. If(A12 < π, (uN0x(A12, π / 2), uN0y(A12, π / 2), uN0z(A12, π / 2)), If[A12 < (2 * π), (uN1x(A12, π / 2), uN1y(A12, π / 2), uN1z(A12, π / 2)), If[A12 < (3 * π), ((-uN0x(A12, π / 2)), (-uN0y(A12, π / 2)), (-uN0z(A12, π / 2))), ((-uN1x(A12, π / 2)), (-uN1y(A12, π / 2)), (-uN1z(A12, π / 2)))]]) → C12
  85. If(A13 < π, (uN0x(A13, π / 2), uN0y(A13, π / 2), uN0z(A13, π / 2)), If[A13 < (2 * π), (uN1x(A13, π / 2), uN1y(A13, π / 2), uN1z(A13, π / 2)), If[A13 < (3 * π), ((-uN0x(A13, π / 2)), (-uN0y(A13, π / 2)), (-uN0z(A13, π / 2))), ((-uN1x(A13, π / 2)), (-uN1y(A13, π / 2)), (-uN1z(A13, π / 2)))]]) → C13
  86. If(A14 < π, (uN0x(A14, π / 2), uN0y(A14, π / 2), uN0z(A14, π / 2)), If[A14 < (2 * π), (uN1x(A14, π / 2), uN1y(A14, π / 2), uN1z(A14, π / 2)), If[A14 < (3 * π), ((-uN0x(A14, π / 2)), (-uN0y(A14, π / 2)), (-uN0z(A14, π / 2))), ((-uN1x(A14, π / 2)), (-uN1y(A14, π / 2)), (-uN1z(A14, π / 2)))]]) → C14
  87. If(A15 < π, (uN0x(A15, π / 2), uN0y(A15, π / 2), uN0z(A15, π / 2)), If[A15 < (2 * π), (uN1x(A15, π / 2), uN1y(A15, π / 2), uN1z(A15, π / 2)), If[A15 < (3 * π), ((-uN0x(A15, π / 2)), (-uN0y(A15, π / 2)), (-uN0z(A15, π / 2))), ((-uN1x(A15, π / 2)), (-uN1y(A15, π / 2)), (-uN1z(A15, π / 2)))]]) → C15
  88. If(A16 < π, (uN0x(A16, π / 2), uN0y(A16, π / 2), uN0z(A16, π / 2)), If[A16 < (2 * π), (uN1x(A16, π / 2), uN1y(A16, π / 2), uN1z(A16, π / 2)), If[A16 < (3 * π), ((-uN0x(A16, π / 2)), (-uN0y(A16, π / 2)), (-uN0z(A16, π / 2))), ((-uN1x(A16, π / 2)), (-uN1y(A16, π / 2)), (-uN1z(A16, π / 2)))]]) → C16
  89. If(A17 < π, (uN0x(A17, π / 2), uN0y(A17, π / 2), uN0z(A17, π / 2)), If[A17 < (2 * π), (uN1x(A17, π / 2), uN1y(A17, π / 2), uN1z(A17, π / 2)), If[A17 < (3 * π), ((-uN0x(A17, π / 2)), (-uN0y(A17, π / 2)), (-uN0z(A17, π / 2))), ((-uN1x(A17, π / 2)), (-uN1y(A17, π / 2)), (-uN1z(A17, π / 2)))]]) → C17
  90. If(A18 < π, (uN0x(A18, π / 2), uN0y(A18, π / 2), uN0z(A18, π / 2)), If[A18 < (2 * π), (uN1x(A18, π / 2), uN1y(A18, π / 2), uN1z(A18, π / 2)), If[A18 < (3 * π), ((-uN0x(A18, π / 2)), (-uN0y(A18, π / 2)), (-uN0z(A18, π / 2))), ((-uN1x(A18, π / 2)), (-uN1y(A18, π / 2)), (-uN1z(A18, π / 2)))]]) → C18
  91. If(A19 < π, (uN0x(A19, π / 2), uN0y(A19, π / 2), uN0z(A19, π / 2)), If[A19 < (2 * π), (uN1x(A19, π / 2), uN1y(A19, π / 2), uN1z(A19, π / 2)), If[A19 < (3 * π), ((-uN0x(A19, π / 2)), (-uN0y(A19, π / 2)), (-uN0z(A19, π / 2))), ((-uN1x(A19, π / 2)), (-uN1y(A19, π / 2)), (-uN1z(A19, π / 2)))]]) → C19
  92. If(A20 < π, (uN0x(A20, π / 2), uN0y(A20, π / 2), uN0z(A20, π / 2)), If[A20 < (2 * π), (uN1x(A20, π / 2), uN1y(A20, π / 2), uN1z(A20, π / 2)), If[A20 < (3 * π), ((-uN0x(A20, π / 2)), (-uN0y(A20, π / 2)), (-uN0z(A20, π / 2))), ((-uN1x(A20, π / 2)), (-uN1y(A20, π / 2)), (-uN1z(A20, π / 2)))]]) → C20
  93. If(A21 < π, (uN0x(A21, π / 2), uN0y(A21, π / 2), uN0z(A21, π / 2)), If[A21 < (2 * π), (uN1x(A21, π / 2), uN1y(A21, π / 2), uN1z(A21, π / 2)), If[A21 < (3 * π), ((-uN0x(A21, π / 2)), (-uN0y(A21, π / 2)), (-uN0z(A21, π / 2))), ((-uN1x(A21, π / 2)), (-uN1y(A21, π / 2)), (-uN1z(A21, π / 2)))]]) → C21
  94. If(A22 < π, (uN0x(A22, π / 2), uN0y(A22, π / 2), uN0z(A22, π / 2)), If[A22 < (2 * π), (uN1x(A22, π / 2), uN1y(A22, π / 2), uN1z(A22, π / 2)), If[A22 < (3 * π), ((-uN0x(A22, π / 2)), (-uN0y(A22, π / 2)), (-uN0z(A22, π / 2))), ((-uN1x(A22, π / 2)), (-uN1y(A22, π / 2)), (-uN1z(A22, π / 2)))]]) → C22
  95. If(A23 < π, (uN0x(A23, π / 2), uN0y(A23, π / 2), uN0z(A23, π / 2)), If[A23 < (2 * π), (uN1x(A23, π / 2), uN1y(A23, π / 2), uN1z(A23, π / 2)), If[A23 < (3 * π), ((-uN0x(A23, π / 2)), (-uN0y(A23, π / 2)), (-uN0z(A23, π / 2))), ((-uN1x(A23, π / 2)), (-uN1y(A23, π / 2)), (-uN1z(A23, π / 2)))]]) → C23
  96. If(A24 < π, (uN0x(A24, π / 2), uN0y(A24, π / 2), uN0z(A24, π / 2)), If[A24 < (2 * π), (uN1x(A24, π / 2), uN1y(A24, π / 2), uN1z(A24, π / 2)), If[A24 < (3 * π), ((-uN0x(A24, π / 2)), (-uN0y(A24, π / 2)), (-uN0z(A24, π / 2))), ((-uN1x(A24, π / 2)), (-uN1y(A24, π / 2)), (-uN1z(A24, π / 2)))]]) → C24
  97. If(A25 < π, (uN0x(A25, π / 2), uN0y(A25, π / 2), uN0z(A25, π / 2)), If[A25 < (2 * π), (uN1x(A25, π / 2), uN1y(A25, π / 2), uN1z(A25, π / 2)), If[A25 < (3 * π), ((-uN0x(A25, π / 2)), (-uN0y(A25, π / 2)), (-uN0z(A25, π / 2))), ((-uN1x(A25, π / 2)), (-uN1y(A25, π / 2)), (-uN1z(A25, π / 2)))]]) → C25
  98. Translate(Vector[(0, 0, 0), C6], B6) → D6
  99. Translate(Vector[(0, 0, 0), C7], B7) → D7
  100. Translate(Vector[(0, 0, 0), C8], B8) → D8
  101. Translate(Vector[(0, 0, 0), C9], B9) → D9
  102. Translate(Vector[(0, 0, 0), C10], B10) → D10
  103. Translate(Vector[(0, 0, 0), C11], B11) → D11
  104. Translate(Vector[(0, 0, 0), C12], B12) → D12
  105. Translate(Vector[(0, 0, 0), C13], B13) → D13
  106. Translate(Vector[(0, 0, 0), C14], B14) → D14
  107. Translate(Vector[(0, 0, 0), C15], B15) → D15
  108. Translate(Vector[(0, 0, 0), C16], B16) → D16
  109. Translate(Vector[(0, 0, 0), C17], B17) → D17
  110. Translate(Vector[(0, 0, 0), C18], B18) → D18
  111. Translate(Vector[(0, 0, 0), C19], B19) → D19
  112. Translate(Vector[(0, 0, 0), C20], B20) → D20
  113. Translate(Vector[(0, 0, 0), C21], B21) → D21
  114. Translate(Vector[(0, 0, 0), C22], B22) → D22
  115. Translate(Vector[(0, 0, 0), C23], B23) → D23
  116. Translate(Vector[(0, 0, 0), C24], B24) → D24
  117. Translate(Vector[(0, 0, 0), C25], B25) → D25

AI Drawing Prompt Reference

Draw a Klein bottle surface with its unit normal vectors. Start by plotting two parameterized surfaces, one for the main body and one for the complement of the Klein bottle. Compute the partial derivatives of these surfaces to obtain the normal vectors. Categorize the normal vectors into three groups based on parameter ranges, corresponding to different surface regions, and adjust their directions accordingly. Finally, draw these normal vectors originating from their respective points on the surfaces to visualize the distribution of normal vectors across the Klein bottle.
The prompt above was compiled from the original drawing commands and is for reference only.