+ self.node = None
+
+ def _pointDist(self, p0, p1, p2):
+ return numpy.linalg.norm(numpy.cross((p0 - p1), (p0 - p2))) / numpy.linalg.norm(p2 - p1)
+
+ def _traceNodes(self, p0, p1):
+ pp0 = p0 - [0,0,self.parent.getObjectSize()[2]/2]
+ pp1 = p1 - [0,0,self.parent.getObjectSize()[2]/2]
+ s = self._nodeSize()
+ if self._pointDist(numpy.array([0,0,0]), pp0, pp1) < s * 2:
+ return 1
+ if self._pointDist(numpy.array([s*15,0,0]), pp0, pp1) < s * 2:
+ return 2
+ if self._pointDist(numpy.array([0,s*15,0]), pp0, pp1) < s * 2:
+ return 3
+ if self._pointDist(numpy.array([0,0,s*15]), pp0, pp1) < s * 2:
+ return 4
+ return None
+
+ def _nodeSize(self):
+ return self.parent.zoom / self.parent.GetSize().GetWidth() * 6