Esempio n. 1
0
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