docs: def _calcOffAxisFactor(self, aLocation, deltaLocation, limits):
          """
              Calculate the off-axis factors.
          """
          relative = []
          for dim in limits.keys():
              f = aLocation[dim]
              v = deltaLocation[dim]
              mB, M, mA = limits[dim]
              r = 0
              if mA is not None and v > mA:
                  relative.append(0)
                  continue
              elif mB is not None and v < mB:
                  relative.append(0)
                  continue
              if f < v-_EPSILON:
                  if mB is None:
                      if M is not None and mA is not None:
                          if v == M:
                              r = (float(max(f,mA)-min(f, mA))/float(max(M,mA)-min(M, mA)))
                          else:
                              r = -(float(max(f,mA)-min(f, mA))/float(max(M,mA)-min(M, mA)) -1)
                      else: r = 0
                  elif mA is None: r = 0
                  else: r = float(f-mB)/(mA-mB)
              elif f > v+_EPSILON:
                  if mB is None: r = 0
                  elif mA is None:
                      if M is not None and mB is not None:
                          if v == M:
                              r = (float(max(f,mB)-min(f, mB))/(max(mB, M)-min(mB, M)))
                          else:
                              r = -(float(max(f,mB)-min(f, mB))/(max(mB, M)-min(mB, M)) - 1)
                      else: r = 0
                  else: r = float(mA-f)/(mA-mB)
              else: r = 1
              relative.append(r)
          f = 1
          for i in relative:
              f *= i
          return f