<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def heightmap_get_normal( hm: np.ndarray, x: float, y: float, waterLevel: float ) -> Tuple[float, float, float]: """Return the map normal at given coordinates. Args: hm (numpy.ndarray):
 A numpy.ndarray formatted for heightmap functions. x (float):
 The x coordinate. y (float):
 The y coordinate. waterLevel (float):
 The heightmap is considered flat below this value. Returns: Tuple[float, float, float]: An (x, y, z) vector normal. """

    cn = ffi.new("float[3]")
    lib.TCOD_heightmap_get_normal(_heightmap_cdata(hm), x, y, cn, waterLevel)
    return tuple(cn)