def extendSkeletonTangentsToMatchSourceTangents(tangents, sourceTangents): extendedTangents = []; for i in range(len(tangents)): l1 = tangents[i][0] l2 = tangents[i][1] lmean = [ (l1[0] + l2[0])/2.0, (l1[1] + l2[1])/2.0 ] sl1 = sourceTangents[i][0] sl2 = sourceTangents[i][1] slmean = [ (sl1[0] + sl2[0])/2.0, (sl1[1] + sl2[1])/2.0 ] sDistL1 = vf.distance(sl1,slmean) distL1 = vf.distance(l1,lmean) diff = vf.pDiff(l1, lmean) extendedL1 = [ lmean[0] + sDistL1 * diff[0]/distL1, lmean[1] + sDistL1 * diff[1]/distL1 ] sDistL2 = vf.distance(sl2,slmean) distL2 = vf.distance(l2,lmean) diff = vf.pDiff(l2, lmean) extendedL2 = [ lmean[0] + sDistL2 * diff[0]/distL2, lmean[1] + sDistL2 * diff[1]/distL2 ] extendedTangents.append( [ extendedL1, extendedL2 ] ) return extendedTangents
def test_distance(self): self.assertEqual( vectorFunctions.distance(self.p5,self.p5), 0) self.assertEqual( vectorFunctions.distance(self.p1,self.p1), 0) self.assertEqual( vectorFunctions.distance(self.p8,self.p8), 0) self.assertEqual( vectorFunctions.distance(self.p6,self.p6), 0) self.assertEqual( vectorFunctions.distance(self.p3,self.p7), math.sqrt(8))
def segmentsFromPointsToPolar(segments): # convert so that each segment is described by a length and an angle # the starting point is the end of the previous segment polarSegments = [segments[0]] # start point # sequential for i in range(1,len(segments)): p1 = segments[i-1] p2 = segments[i] distance = vf.distance(p2,p1) diff = vf.pDiff(p2, p1) theta = math.atan2(diff[0], -diff[1]) polarSegments.append([distance, theta]) return polarSegments