def getSegmentsFromLoopListsPoints(loopLists, pointBegin, pointEnd):
 normalizedSegment = (pointEnd - pointBegin)
 normalizedSegmentLength = abs(normalizedSegment)
 if (normalizedSegmentLength == 0.0):
  return []
 normalizedSegment /= normalizedSegmentLength
 segmentYMirror = complex(normalizedSegment.real, (- normalizedSegment.imag))
 pointBeginRotated = (segmentYMirror * pointBegin)
 pointEndRotated = (segmentYMirror * pointEnd)
 rotatedLoopLists = []
 for loopList in loopLists:
  rotatedLoopList = []
  rotatedLoopLists.append(rotatedLoopList)
  for loop in loopList:
   rotatedLoop = euclidean.getPointsRoundZAxis(segmentYMirror, loop)
   rotatedLoopList.append(rotatedLoop)
 xIntersectionIndexList = []
 xIntersectionIndexList.append(euclidean.XIntersectionIndex((-1), pointBeginRotated.real))
 xIntersectionIndexList.append(euclidean.XIntersectionIndex((-1), pointEndRotated.real))
 euclidean.addXIntersectionIndexesFromLoopListsY(rotatedLoopLists, xIntersectionIndexList, pointBeginRotated.imag)
 segments = euclidean.getSegmentsFromXIntersectionIndexes(xIntersectionIndexList, pointBeginRotated.imag)
 for segment in segments:
  for endpoint in segment:
   endpoint.point *= normalizedSegment
 return segments

def getSegmentsFromLoopListsPoints ( loopLists , pointBegin , pointEnd ) : normalizedSegment = ( pointEnd - pointBegin ) normalizedSegmentLength = abs ( normalizedSegment ) if ( normalizedSegmentLength == 0.0 ) : return [ ] normalizedSegment /= normalizedSegmentLength segmentYMirror = complex ( normalizedSegment . real , ( - normalizedSegment . imag ) ) pointBeginRotated = ( segmentYMirror * pointBegin ) pointEndRotated = ( segmentYMirror * pointEnd ) rotatedLoopLists = [ ] for loopList in loopLists : rotatedLoopList = [ ] rotatedLoopLists . append ( rotatedLoopList ) for loop in loopList : rotatedLoop = euclidean . getPointsRoundZAxis ( segmentYMirror , loop ) rotatedLoopList . append ( rotatedLoop ) xIntersectionIndexList = [ ] xIntersectionIndexList . append ( euclidean . XIntersectionIndex ( ( - 1 ) , pointBeginRotated . real ) ) xIntersectionIndexList . append ( euclidean . XIntersectionIndex ( ( - 1 ) , pointEndRotated . real ) ) euclidean . addXIntersectionIndexesFromLoopListsY ( rotatedLoopLists , xIntersectionIndexList , pointBeginRotated . imag ) segments = euclidean . getSegmentsFromXIntersectionIndexes ( xIntersectionIndexList , pointBeginRotated . imag ) for segment in segments : for endpoint in segment : endpoint . point *= normalizedSegment return segments
get endpoint segments from the beginning and end of a line segment .