code: def test_dimension_normalization():
      A = Plane(Point3D(1, 1, 2), normal_vector=(1, 1, 1))
      b = Point(1, 1)
      assert A.projection(b) == Point(
          Rational(5, 3), Rational(5, 3), Rational(2, 3)
      )
  
      a, b = Point(0, 0), Point3D(0, 1)
      Z = (0, 0, 1)
      p = Plane(a, normal_vector=Z)
      assert p.perpendicular_plane(a, b) == Plane(
          Point3D(0, 0, 0), (1, 0, 0)
      )
      assert Plane((1, 2, 1), (2, 1, 0), (3, 1, 2)).intersection(
          (2, 1)
      ) == [Point(2, 1, 0)]
  
file_path: sympy/sympy/geometry/tests/test_plane.py
imports: from sympy.core.numbers import Rational, pi
  from sympy.core.singleton import S
  from sympy.core.symbol import Dummy, symbols
  from sympy.functions.elementary.miscellaneous import sqrt
  from sympy.functions.elementary.trigonometric import asin, cos, sin
  from sympy.geometry import Line, Point, Ray, Segment, Point3D, Line3D, Ray3D, Segment3D, Plane, Circle
  from sympy.geometry.util import are_coplanar
  from sympy.testing.pytest import raises
label_desc: Use image node_id 2 for calling a global function with example usage: test_dimension_normalization() without return types