code: def geodetic2ecef(
      lat,
      lon,
      alt,
      ell: Ellipsoid = None,
      deg: bool = True,
  ) -> tuple:
      """
      point transformation from Geodetic of specified ellipsoid (default WGS-84) to ECEF
  
      Parameters
      ----------
  
      lat
             target geodetic latitude
      lon
             target geodetic longitude
      alt
           target altitude above geodetic ellipsoid (meters)
      ell : Ellipsoid, optional
            reference ellipsoid
      deg : bool, optional
            degrees input/output  (False: radians in/out)
  
  
      Returns
      -------
  
      ECEF (Earth centered, Earth fixed)  x,y,z
  
      x
          target x ECEF coordinate (meters)
      y
          target y ECEF coordinate (meters)
      z
          target z ECEF coordinate (meters)
      """
      lat, ell = sanitize(lat, ell, deg)
      if deg:
          lon = radians(lon)
  
      # radius of curvature of the prime vertical section
      N = ell.semimajor_axis**2 / hypot(
          ell.semimajor_axis * cos(lat), ell.semiminor_axis * sin(lat)
      )
      # Compute cartesian (geocentric) coordinates given (curvilinear) geodetic coordinates.
      x = (N + alt) * cos(lat) * cos(lon)
      y = (N + alt) * cos(lat) * sin(lon)
      z = (
          N * (ell.semiminor_axis / ell.semimajor_axis) ** 2 + alt
      ) * sin(lat)
  
      return x, y, z
  
file_path: pymap3d/src/pymap3d/ecef.py
imports: from __future__ import annotations
  import warnings
  from datetime import datetime
  from math import pi
  from .ellipsoid import Ellipsoid
  from .mathfun import atan, atan2, cos, degrees, hypot, isclose, radians, sin, sqrt, tan
  from .utils import sanitize
label_desc: Use image node_id 1 for calling a global function with example usage: geodetic2ecef(lat, lon, alt, ell, deg) and returns: x,  y,  z