code: def normal_from_points(a, b, c):
      '''Computes a normal vector given three points.
      '''
      x1, y1, z1 = a
      x2, y2, z2 = b
      x3, y3, z3 = c
      ab = (x2 - x1, y2 - y1, z2 - z1)
      ac = (x3 - x1, y3 - y1, z3 - z1)
      x, y, z = cross(ab, ac)
      d = (x * x + y * y + z * z) ** 0.5
      return (x / d, y / d, z / df normal_from_points(a, b, c):
      '''Computes a normal vector given three points.
      '''
      x1, y1, z1 = a
      x2, y2, z2 = b
      x3, y3, z3 = c
      ab = (x2 - x1, y2 - y1, z2 - z1)
      ac = (x3 - x1, y3 - y1, z3 - z1)
      x, y, z = cross(ab, ac)
      d = (x * x + y * y + z * z) ** 0.5
      return (x / d, y / d, z / d)
docs: Computes a normal vector given three points.