Swift: detección de intersección desde el kit de sprites Dibujos de SKShapeNode

Estoy dibujando con Sprite Kit. Me gustaría detectar cuándo los dibujos del usuario se cruzan.
introduzca la descripción de la imagen aquí

Intenté seguir el código pero no funciona. Parece que sprite kit no guarda todos los puntos:

override func touchesMoved(touches: NSSet, withEvent event: UIEvent) { /* Called when a touch begins */ touch = touches.anyObject() as UITouch! for drawingPoint in drawingPoints{ if(touch.locationInNode(self) == drawingPoint){println(true)} } drawingPoints.append(touch.locationInNode(self)) } 

Aquí hay una function para segmentos intersección en swift.

 func linesIntersect(line1 : CGPointInterval, line2 : CGPointInterval) -> (intersects: Bool, point : CGPoint?) { //The algorithm is taken from http://www.amazon.com/dp/0672323699/?tag=stackoverfl08-20 // http://portal.aauj.edu/portal_resources/downloads/programming/windows_game_programming_guru.pdf let p0_x = line1.start.x let p1_x = line1.end.x let p2_x = line2.start.x let p3_x = line2.end.x let p0_y = line1.start.y let p1_y = line1.end.y let p2_y = line2.start.y let p3_y = line2.end.y let s1_x = p1_x - p0_x let s1_y = p1_y - p0_y let s2_x = p3_x - p2_x let s2_y = p3_y - p2_y let s = (-s1_y * (p0_x - p2_x) + s1_x * (p0_y - p2_y)) / (-s2_x * s1_y + s1_x * s2_y) let t = ( s2_x * (p0_y - p2_y) - s2_y * (p0_x - p2_x)) / (-s2_x * s1_y + s1_x * s2_y) if (s >= 0 && s <= 1 && t >= 0 && t <= 1) { // Collision detected let finalX = p0_x + (t * s1_x) let finalY = p0_y + (t * s1_y) return (true, CGPointMake(finalX, finalY)) } return (false, nil) // No collision }