code: def get_line_dot_intersection(
      x1: jnp.float32,
      y1: jnp.float32,
      x2: jnp.float32,
      y2: jnp.float32,
      x3: jnp.float32,
      y3: jnp.float32,
  ) -> Tuple[np.bool_, jnp.ndarray]:
      """Determine if a line segment (x1, y1, x2, y2) intersects with a dot at
      (x3, y3) with radius BUBBLE_RADIUS, if so return the point of intersection.
      """
      point_xy = jnp.array([x3, y3])
      v = jnp.array([y2 - y1, x1 - x2])
      v_len = jnp.linalg.norm(v)
      d = jnp.abs((x2 - x1) * (y1 - y3) - (x1 - x3) * (y2 - y1)) / v_len
      up = point_xy + v / v_len * d
      ua = jnp.where(
          jnp.abs(x2 - x1) > jnp.abs(y2 - y1),
          (up[0] - x1) / (x2 - x1),
          (up[1] - y1) / (y2 - y1),
      )
      ua = jnp.where(d > BUBBLE_RADIUS, 0, ua)
      intersected = jnp.bitwise_and(ua > 0.0, ua < 1.0)
      return intersected, up
  
imports: from typing import Tuple
  from functools import partial
  from PIL import Image
  from PIL import ImageDraw
  import numpy
  import jax
  import jax.numpy
  from jax import random
  from jax import tree_util
  from flax.struct import dataclass
  from evojax.task.base import TaskState
  from evojax.task.base import VectorizedTask
label_desc: Use image node_id 7 for calling a global function with example usage: get_line_dot_intersection(x1, y1, x2, y2, x3, y3) and returns: intersected,  up