class_docstr: Visualize triangulation process stepwise to aid in debugging.
  
  *interval* specifies the diration to wait before drawing each update in
  the triangulation procedure. Negative values cause the display to wait
  until the user clicks on the window for each update.
  
  *skip* causes the display to immediately process the first N events
  before pausing.
code: def draw_state(self):
      global app
      print("State %s" % self.iteration)
      self.iteration += 1
      if self.iteration <= self.skip:
          return
  
      front_pts = self.pts[np.array(self.front)]
      self.front_line.setData(front_pts[:, 0], front_pts[:, 1])
      self.graph.setData(pos=self.pts, adj=self.edges)
  
      # Auto-advance on timer
      if self.interval < 0:
          # Advance once per click
          while True:
              app.processEvents()
              time.sleep(0.01)
              if self.nextStep:
                  self.nextStep = False
                  break
      else:
          # sleep, but keep ui responsive
          for i in range(int(self.interval / 0.01)):
              app.processEvents()
              time.sleep(0.01)
  
file_path: vispy/vispy/geometry/_triangulation_debugger.py
imports: from __future__ import division
  import numpy
  import time
  from ..util.geometry.triangulation import Triangulation
label_desc: Use image node_id 3 for calling the DebugTriangulation obj's underlying member method code with example usage: obj.draw_state() without return types