code: def make_arm(n, angle):
      R = np.linspace(10, 450 + 50 * np.random.uniform(0.5, 1.0), n)
      R += 40 * np.random.normal(0, 2.0, n) * np.linspace(1, 0.1, n)
      T = (
          angle
          + np.linspace(0, 2.5 * np.pi, n)
          + np.pi / 6 * np.random.normal(0, 0.5, n)
      )
      S = 8 + 2 * np.abs(np.random.normal(0, 1, n))
      S *= np.linspace(1, 0.85, n)
      P = np.zeros((n, 3), dtype=np.float32)
      X, Y, Z = P[:, 0], P[:, 1], P[:, 2]
      X[...] = R * np.cos(T)
      Y[...] = R * np.sin(T) * 1.1
      D = np.sqrt(X * X + Y * Y)
      Z[...] = 8 * np.random.normal(0, 2 - D / 512.0, n)
      X += (D * np.random.uniform(0, 1, n) > 250) * (
          0.05 * D * np.random.uniform(-1, 1, n)
      )
      Y += (D * np.random.uniform(0, 1, n) > 250) * (
          0.05 * D * np.random.uniform(-1, 1, n)
      )
      Z += (D * np.random.uniform(0, 1, n) > 250) * (
          0.05 * D * np.random.uniform(-1, 1, n)
      )
      D = (D - D.min()) / (D.max() - D.min())
  
      return P / 256, S / 2, D
  
file_path: vispy/examples/demo/gloo/galaxy.py
imports: import numpy
  from vispy import gloo
  from vispy import app
  from vispy.util.transforms import perspective, translate, rotate
label_desc: Use image node_id 1 for calling a global function with example usage: make_arm(n, angle) and returns: unknown,  unknown,  D