Exemplo n.º 1
0
 def getExtruderOffReversalPoint(self, afterSegment, afterSegmentComplex,
                                 beforeSegment, beforeSegmentComplex,
                                 location):
     "If the extruder is off and the path is reversing, add intermediate slow points."
     if self.filletRepository.reversalSlowdownDistanceOverPerimeterWidth.value < 0.1:
         return None
     if self.extruderActive:
         return None
     reversalBufferSlowdownDistance = self.reversalSlowdownDistance * 2.0
     afterSegmentComplexLength = abs(afterSegmentComplex)
     if afterSegmentComplexLength < reversalBufferSlowdownDistance:
         return None
     beforeSegmentComplexLength = abs(beforeSegmentComplex)
     if beforeSegmentComplexLength < reversalBufferSlowdownDistance:
         return None
     afterSegmentComplexNormalized = afterSegmentComplex / afterSegmentComplexLength
     beforeSegmentComplexNormalized = beforeSegmentComplex / beforeSegmentComplexLength
     if euclidean.getDotProduct(afterSegmentComplexNormalized,
                                beforeSegmentComplexNormalized) < 0.95:
         return None
     slowdownFeedRate = self.feedRateMinute * 0.5
     self.shouldAddLine = False
     beforePoint = euclidean.getPointPlusSegmentWithLength(
         self.reversalSlowdownDistance * abs(beforeSegment) /
         beforeSegmentComplexLength, location, beforeSegment)
     self.addLinearMovePoint(self.feedRateMinute, beforePoint)
     self.addLinearMovePoint(slowdownFeedRate, location)
     afterPoint = euclidean.getPointPlusSegmentWithLength(
         self.reversalSlowdownDistance * abs(afterSegment) /
         afterSegmentComplexLength, location, afterSegment)
     self.addLinearMovePoint(slowdownFeedRate, afterPoint)
     return afterPoint
Exemplo n.º 2
0
 def splitPointGetAfter(self, location, nextLocation):
     "Bevel a point and return the end of the bevel.   should get complex for radius"
     if self.filletRadius < 2.0 * self.minimumRadius:
         return location
     afterSegment = nextLocation - location
     afterSegmentComplex = afterSegment.dropAxis(2)
     afterSegmentComplexLength = abs(afterSegmentComplex)
     thirdAfterSegmentLength = 0.333 * afterSegmentComplexLength
     if thirdAfterSegmentLength < self.minimumRadius:
         return location
     beforeSegment = self.oldLocation - location
     beforeSegmentComplex = beforeSegment.dropAxis(2)
     beforeSegmentComplexLength = abs(beforeSegmentComplex)
     thirdBeforeSegmentLength = 0.333 * beforeSegmentComplexLength
     if thirdBeforeSegmentLength < self.minimumRadius:
         return location
     extruderOffReversalPoint = self.getExtruderOffReversalPoint(
         afterSegment, afterSegmentComplex, beforeSegment,
         beforeSegmentComplex, location)
     if extruderOffReversalPoint != None:
         return extruderOffReversalPoint
     bevelRadius = min(thirdAfterSegmentLength, self.filletRadius)
     bevelRadius = min(thirdBeforeSegmentLength, bevelRadius)
     self.shouldAddLine = False
     beforePoint = euclidean.getPointPlusSegmentWithLength(
         bevelRadius * abs(beforeSegment) / beforeSegmentComplexLength,
         location, beforeSegment)
     self.addLinearMovePoint(self.feedRateMinute, beforePoint)
     afterPoint = euclidean.getPointPlusSegmentWithLength(
         bevelRadius * abs(afterSegment) / afterSegmentComplexLength,
         location, afterSegment)
     self.addLinearMovePoint(self.getCornerFeedRate(), afterPoint)
     return afterPoint
Exemplo n.º 3
0
	def splitPointGetAfter( self, location, nextLocation ):
		"Bevel a point and return the end of the bevel.   should get complex for radius"
		if self.filletRadius < 2.0 * self.minimumRadius:
			return location
		afterSegment = nextLocation - location
		afterSegmentComplex = afterSegment.dropAxis( 2 )
		afterSegmentComplexLength = abs( afterSegmentComplex )
		thirdAfterSegmentLength = 0.333 * afterSegmentComplexLength
		if thirdAfterSegmentLength < self.minimumRadius:
			return location
		beforeSegment = self.oldLocation - location
		beforeSegmentComplex = beforeSegment.dropAxis( 2 )
		beforeSegmentComplexLength = abs( beforeSegmentComplex )
		thirdBeforeSegmentLength = 0.333 * beforeSegmentComplexLength
		if thirdBeforeSegmentLength < self.minimumRadius:
			return location
		extruderOffReversalPoint = self.getExtruderOffReversalPoint( afterSegment, afterSegmentComplex, beforeSegment, beforeSegmentComplex, location )
		if extruderOffReversalPoint != None:
			return extruderOffReversalPoint
		bevelRadius = min( thirdAfterSegmentLength, self.filletRadius )
		bevelRadius = min( thirdBeforeSegmentLength, bevelRadius )
		self.shouldAddLine = False
		beforePoint = euclidean.getPointPlusSegmentWithLength( bevelRadius * abs( beforeSegment ) / beforeSegmentComplexLength, location, beforeSegment )
		self.addLinearMovePoint( self.feedRateMinute, beforePoint )
		afterPoint = euclidean.getPointPlusSegmentWithLength( bevelRadius * abs( afterSegment ) / afterSegmentComplexLength, location, afterSegment )
		self.addLinearMovePoint( self.getCornerFeedRate(), afterPoint )
		return afterPoint
Exemplo n.º 4
0
	def getExtruderOffReversalPoint( self, afterSegment, afterSegmentComplex, beforeSegment, beforeSegmentComplex, location ):
		"If the extruder is off and the path is reversing, add intermediate slow points."
		if self.filletRepository.reversalSlowdownDistanceOverPerimeterWidth.value < 0.1:
			return None
		if self.extruderActive:
			return None
		reversalBufferSlowdownDistance = self.reversalSlowdownDistance * 2.0
		afterSegmentComplexLength = abs( afterSegmentComplex )
		if afterSegmentComplexLength < reversalBufferSlowdownDistance:
			return None
		beforeSegmentComplexLength = abs( beforeSegmentComplex )
		if beforeSegmentComplexLength < reversalBufferSlowdownDistance:
			return None
		afterSegmentComplexNormalized = afterSegmentComplex / afterSegmentComplexLength
		beforeSegmentComplexNormalized = beforeSegmentComplex / beforeSegmentComplexLength
		if euclidean.getDotProduct( afterSegmentComplexNormalized, beforeSegmentComplexNormalized ) < 0.95:
			return None
		slowdownFeedRate = self.feedRateMinute * 0.5
		self.shouldAddLine = False
		beforePoint = euclidean.getPointPlusSegmentWithLength( self.reversalSlowdownDistance * abs( beforeSegment ) / beforeSegmentComplexLength, location, beforeSegment )
		self.addLinearMovePoint( self.feedRateMinute, beforePoint )
		self.addLinearMovePoint( slowdownFeedRate, location )
		afterPoint = euclidean.getPointPlusSegmentWithLength( self.reversalSlowdownDistance * abs( afterSegment ) / afterSegmentComplexLength, location, afterSegment )
		self.addLinearMovePoint( slowdownFeedRate, afterPoint )
		return afterPoint
Exemplo n.º 5
0
 def splitPointGetAfter(self, location, nextLocation):
     "Fillet a point into arc segments and return the end of the last segment."
     if self.filletRadius < 2.0 * self.minimumRadius:
         return location
     afterSegment = nextLocation - location
     afterSegmentComplex = afterSegment.dropAxis(2)
     thirdAfterSegmentLength = 0.333 * abs(afterSegmentComplex)
     if thirdAfterSegmentLength < self.minimumRadius:
         return location
     beforeSegment = self.oldLocation - location
     beforeSegmentComplex = beforeSegment.dropAxis(2)
     thirdBeforeSegmentLength = 0.333 * abs(beforeSegmentComplex)
     if thirdBeforeSegmentLength < self.minimumRadius:
         return location
     extruderOffReversalPoint = self.getExtruderOffReversalPoint(
         afterSegment, afterSegmentComplex, beforeSegment,
         beforeSegmentComplex, location)
     if extruderOffReversalPoint != None:
         return extruderOffReversalPoint
     bevelRadius = min(thirdAfterSegmentLength, self.filletRadius)
     bevelRadius = min(thirdBeforeSegmentLength, bevelRadius)
     self.shouldAddLine = False
     beforePoint = euclidean.getPointPlusSegmentWithLength(
         bevelRadius * abs(beforeSegment) / abs(beforeSegmentComplex),
         location, beforeSegment)
     self.addLinearMovePoint(self.feedRateMinute, beforePoint)
     afterPoint = euclidean.getPointPlusSegmentWithLength(
         bevelRadius * abs(afterSegment) / abs(afterSegmentComplex),
         location, afterSegment)
     afterPointComplex = afterPoint.dropAxis(2)
     beforePointComplex = beforePoint.dropAxis(2)
     locationComplex = location.dropAxis(2)
     midPoint = 0.5 * (afterPoint + beforePoint)
     midPointComplex = midPoint.dropAxis(2)
     midPointMinusLocationComplex = midPointComplex - locationComplex
     midPointLocationLength = abs(midPointMinusLocationComplex)
     if midPointLocationLength < 0.01 * self.filletRadius:
         self.addLinearMovePoint(self.getCornerFeedRate(), afterPoint)
         return afterPoint
     midPointAfterPointLength = abs(midPointComplex - afterPointComplex)
     midPointCenterLength = midPointAfterPointLength * midPointAfterPointLength / midPointLocationLength
     radius = math.sqrt(midPointCenterLength * midPointCenterLength +
                        midPointAfterPointLength * midPointAfterPointLength)
     centerComplex = midPointComplex + midPointMinusLocationComplex * midPointCenterLength / midPointLocationLength
     center = Vector3(centerComplex.real, centerComplex.imag, midPoint.z)
     afterCenterComplex = afterPointComplex - centerComplex
     beforeMinusCenterCenterComplex = beforePointComplex - centerComplex
     beforeCenter = beforePoint - center
     beforeCenterComplex = beforeCenter.dropAxis(2)
     subtractComplexMirror = complex(beforeCenterComplex.real,
                                     -beforeCenterComplex.imag)
     differenceComplex = subtractComplexMirror * afterCenterComplex
     differenceAngle = math.atan2(differenceComplex.imag,
                                  differenceComplex.real)
     self.addArc(differenceAngle, afterPoint, beforeCenter, beforePoint,
                 center)
     return afterPoint
Exemplo n.º 6
0
	def splitPointGetAfter( self, location, nextLocation ):
		"Fillet a point into arc segments and return the end of the last segment."
		if self.filletRadius < 2.0 * self.minimumRadius:
			return location
		afterSegment = nextLocation - location
		afterSegmentComplex = afterSegment.dropAxis( 2 )
		thirdAfterSegmentLength = 0.333 * abs( afterSegmentComplex )
		if thirdAfterSegmentLength < self.minimumRadius:
			return location
		beforeSegment = self.oldLocation - location
		beforeSegmentComplex = beforeSegment.dropAxis( 2 )
		thirdBeforeSegmentLength = 0.333 * abs( beforeSegmentComplex )
		if thirdBeforeSegmentLength < self.minimumRadius:
			return location
		extruderOffReversalPoint = self.getExtruderOffReversalPoint( afterSegment, afterSegmentComplex, beforeSegment, beforeSegmentComplex, location )
		if extruderOffReversalPoint != None:
			return extruderOffReversalPoint
		bevelRadius = min( thirdAfterSegmentLength, self.filletRadius )
		bevelRadius = min( thirdBeforeSegmentLength, bevelRadius )
		self.shouldAddLine = False
		beforePoint = euclidean.getPointPlusSegmentWithLength( bevelRadius * abs( beforeSegment ) / abs( beforeSegmentComplex ), location, beforeSegment )
		self.addLinearMovePoint( self.feedRateMinute, beforePoint )
		afterPoint = euclidean.getPointPlusSegmentWithLength( bevelRadius * abs( afterSegment ) / abs( afterSegmentComplex ), location, afterSegment )
		afterPointComplex = afterPoint.dropAxis( 2 )
		beforePointComplex = beforePoint.dropAxis( 2 )
		locationComplex = location.dropAxis( 2 )
		midPoint = 0.5 * ( afterPoint + beforePoint )
		midPointComplex = midPoint.dropAxis( 2 )
		midPointMinusLocationComplex = midPointComplex - locationComplex
		midPointLocationLength = abs( midPointMinusLocationComplex )
		if midPointLocationLength < 0.01 * self.filletRadius:
			self.addLinearMovePoint( self.getCornerFeedRate(), afterPoint )
			return afterPoint
		midPointAfterPointLength = abs( midPointComplex - afterPointComplex )
		midPointCenterLength = midPointAfterPointLength * midPointAfterPointLength / midPointLocationLength
		radius = math.sqrt( midPointCenterLength * midPointCenterLength + midPointAfterPointLength * midPointAfterPointLength )
		centerComplex = midPointComplex + midPointMinusLocationComplex * midPointCenterLength / midPointLocationLength
		center = Vector3( centerComplex.real, centerComplex.imag, midPoint.z )
		afterCenterComplex = afterPointComplex - centerComplex
		beforeMinusCenterCenterComplex = beforePointComplex - centerComplex
		beforeCenter = beforePoint - center
		beforeCenterComplex = beforeCenter.dropAxis( 2 )
		subtractComplexMirror = complex( beforeCenterComplex.real , - beforeCenterComplex.imag )
		differenceComplex = subtractComplexMirror * afterCenterComplex
		differenceAngle = math.atan2( differenceComplex.imag, differenceComplex.real )
		self.addArc( differenceAngle, afterPoint, beforeCenter, beforePoint, center )
		return afterPoint
Exemplo n.º 7
0
	def splitPointGetAfter( self, location, nextLocation ):
		"Fillet a point into arc segments and return the end of the last segment."
		afterSegment = nextLocation - location
		afterSegmentLength = afterSegment.magnitude()
		afterSegmentExtension = 0.5 * afterSegmentLength
		if afterSegmentExtension == 0.0:
			return location
		beforeSegment = self.oldLocation - location
		beforeSegmentLength = beforeSegment.magnitude()
		if beforeSegmentLength == 0.0:
			return location
		radius = self.filletRadius
		afterSegmentNormalized = afterSegment / afterSegmentLength
		beforeSegmentNormalized = beforeSegment / beforeSegmentLength
		betweenCenterDotNormalized = afterSegmentNormalized + beforeSegmentNormalized
		if betweenCenterDotNormalized.magnitude() < 0.01 * self.filletRadius:
			return location
		extruderOffReversalPoint = self.getExtruderOffReversalPoint( afterSegment, beforeSegment, location )
		if extruderOffReversalPoint != None:
			return extruderOffReversalPoint
		betweenCenterDotNormalized.normalize()
		beforeSegmentNormalizedWiddershins = euclidean.getRotatedWiddershinsQuarterAroundZAxis( beforeSegmentNormalized )
		betweenAfterPlaneDot = abs( euclidean.getPlaneDot( betweenCenterDotNormalized, beforeSegmentNormalizedWiddershins ) )
		centerDotDistance = radius / betweenAfterPlaneDot
		bevelLength = math.sqrt( centerDotDistance * centerDotDistance - radius * radius )
		radiusOverBevelLength = radius / bevelLength
		bevelLength = min( bevelLength, radius )
		bevelLength = min( afterSegmentExtension, bevelLength )
		beforePoint = self.oldLocation
		if beforeSegmentLength < bevelLength:
			bevelLength = beforeSegmentLength
		else:
			beforePoint = euclidean.getPointPlusSegmentWithLength( bevelLength, location, beforeSegment )
			self.addLinearMovePoint( self.feedrateMinute, beforePoint )
		self.shouldAddLine = False
		afterPoint = euclidean.getPointPlusSegmentWithLength( bevelLength, location, afterSegment )
		radius = bevelLength * radiusOverBevelLength
		centerDotDistance = radius / betweenAfterPlaneDot
		center = location + betweenCenterDotNormalized * centerDotDistance
		afterCenterSegment = afterPoint - center
		beforeCenterSegment = beforePoint - center
		afterCenterDifferenceAngle = euclidean.getAngleAroundZAxisDifference( afterCenterSegment, beforeCenterSegment )
		self.addArc( afterCenterDifferenceAngle, afterPoint, beforeCenterSegment, beforePoint, center )
		return afterPoint
Exemplo n.º 8
0
	def splitPointGetAfter( self, location, nextLocation ):
		"Bevel a point and return the end of the bevel."
		bevelLength = 0.5 * self.filletRadius
		beforeSegment = self.oldLocation - location
		halfBeforeSegmentLength = 0.5 * beforeSegment.magnitude()
		if halfBeforeSegmentLength <= 0.0:
			return location
		afterSegment = nextLocation - location
		afterSegmentExtension = 0.333 * afterSegment.magnitude()
		if afterSegmentExtension <= 0.0:
			return location
		extruderOffReversalPoint = self.getExtruderOffReversalPoint( afterSegment, beforeSegment, location )
		if extruderOffReversalPoint != None:
			return extruderOffReversalPoint
		bevelLength = min( afterSegmentExtension, bevelLength )
		self.shouldAddLine = False
		if halfBeforeSegmentLength < bevelLength:
			bevelLength = halfBeforeSegmentLength
		else:
			beforePoint = euclidean.getPointPlusSegmentWithLength( bevelLength, location, beforeSegment )
			self.addLinearMovePoint( self.getCornerFeedrate(), beforePoint )
		afterPoint = euclidean.getPointPlusSegmentWithLength( bevelLength, location, afterSegment )
		self.addLinearMovePoint( self.feedrateMinute, afterPoint )
		return afterPoint
Exemplo n.º 9
0
	def getExtruderOffReversalPoint( self, afterSegment, beforeSegment, location ):
		"If the extruder is off and the path is reversing, add intermediate slow points."
		if self.reversalSlowdownDistance < 0.1:
			return None
		reversalBufferSlowdownDistance = self.reversalSlowdownDistance * 1.2
		if afterSegment.magnitude() < reversalBufferSlowdownDistance:
			return None
		if beforeSegment.magnitude() < reversalBufferSlowdownDistance:
			return None
		afterSegmentNormalized = afterSegment / afterSegment.magnitude()
		beforeSegmentNormalized = beforeSegment / beforeSegment.magnitude()
		planeDot = euclidean.getPlaneDot( beforeSegmentNormalized, afterSegmentNormalized )
		if self.extruderActive:
			return None
		if planeDot < 0.95:
			return None
		slowdownFeedrate = self.feedrateMinute * 0.333333333
		self.shouldAddLine = False
		beforePoint = euclidean.getPointPlusSegmentWithLength( self.reversalSlowdownDistance, location, beforeSegment )
		self.addLinearMovePoint( self.feedrateMinute, beforePoint )
		self.addLinearMovePoint( slowdownFeedrate, location )
		afterPoint = euclidean.getPointPlusSegmentWithLength( self.reversalSlowdownDistance, location, afterSegment )
		self.addLinearMovePoint( slowdownFeedrate, afterPoint )
		return afterPoint
Exemplo n.º 10
0
	def splitPointGetAfter( self, location, nextLocation ):
		"Fillet a point into arc segments and return the end of the last segment."
		if self.filletRadius < 2.0 * self.minimumRadius:
			return location
		afterSegment = nextLocation - location
		afterSegmentComplex = afterSegment.dropAxis( 2 )
		thirdAfterSegmentLength = 0.333 * abs( afterSegmentComplex )
		if thirdAfterSegmentLength < self.minimumRadius:
			return location
		beforeSegment = self.oldLocation - location
		beforeSegmentComplex = beforeSegment.dropAxis( 2 )
		thirdBeforeSegmentLength = 0.333 * abs( beforeSegmentComplex )
		if thirdBeforeSegmentLength < self.minimumRadius:
			return location
		extruderOffReversalPoint = self.getExtruderOffReversalPoint( afterSegment, beforeSegment, location )
		if extruderOffReversalPoint != None:
			return extruderOffReversalPoint
		bevelRadius = min( thirdAfterSegmentLength, self.filletRadius )
		bevelRadius = min( thirdBeforeSegmentLength, bevelRadius )
		self.shouldAddLine = False
		beforePoint = euclidean.getPointPlusSegmentWithLength( bevelRadius * abs( beforeSegment ) / abs( beforeSegmentComplex ), location, beforeSegment )
		self.addLinearMovePoint( self.feedRateMinute, beforePoint )
		afterPoint = euclidean.getPointPlusSegmentWithLength( bevelRadius * abs( afterSegment ) / abs( afterSegmentComplex ), location, afterSegment )
#		self.addLinearMovePoint( self.feedRateMinute, afterPoint )
		afterPointComplex = afterPoint.dropAxis( 2 )
		beforePointComplex = beforePoint.dropAxis( 2 )
		locationComplex = location.dropAxis( 2 )
		midPoint = 0.5 * ( afterPoint + beforePoint )
		midPointComplex = midPoint.dropAxis( 2 )
		midPointMinusLocationComplex = midPointComplex - locationComplex
		midPointLocationLength = abs( midPointMinusLocationComplex )
		if midPointLocationLength < 0.01 * self.filletRadius:
			self.addLinearMovePoint( self.getCornerFeedRate(), afterPoint )
			return afterPoint
		midPointAfterPointLength = abs( midPointComplex - afterPointComplex )
		midPointCenterLength = midPointAfterPointLength * midPointAfterPointLength / midPointLocationLength
		radius = math.sqrt( midPointCenterLength * midPointCenterLength + midPointAfterPointLength * midPointAfterPointLength )
		centerComplex = midPointComplex + midPointMinusLocationComplex * midPointCenterLength / midPointLocationLength
		center = Vector3( centerComplex.real, centerComplex.imag, midPoint.z )
		afterCenterComplex = afterPointComplex - centerComplex
		beforeMinusCenterCenterComplex = beforePointComplex - centerComplex
		beforeCenter = beforePoint - center
		beforeCenterComplex = beforeCenter.dropAxis( 2 )
		subtractComplexMirror = complex( beforeCenterComplex.real , - beforeCenterComplex.imag )
		differenceComplex = subtractComplexMirror * afterCenterComplex
		differenceAngle = math.atan2( differenceComplex.imag, differenceComplex.real )
		self.addArc( differenceAngle, afterPoint, beforeCenter, beforePoint, center )
		return afterPoint
#
		afterSegment = nextLocation - location
		afterSegmentLength = afterSegment.magnitude()
		afterSegmentExtension = 0.5 * afterSegmentLength
		if afterSegmentExtension == 0.0:
			return location
		beforeSegment = self.oldLocation - location
		beforeSegmentLength = beforeSegment.magnitude()
		if beforeSegmentLength == 0.0:
			return location
		radius = self.filletRadius
		afterSegmentNormalized = afterSegment / afterSegmentLength
		beforeSegmentNormalized = beforeSegment / beforeSegmentLength
		betweenCenterDotNormalized = afterSegmentNormalized + beforeSegmentNormalized
		if betweenCenterDotNormalized.magnitude() < 0.01 * self.filletRadius:
			return location
		extruderOffReversalPoint = self.getExtruderOffReversalPoint( afterSegment, beforeSegment, location )
		if extruderOffReversalPoint != None:
			return extruderOffReversalPoint
		betweenCenterDotNormalized.normalize()
		beforeSegmentNormalizedWiddershins = euclidean.getRotatedWiddershinsQuarterAroundZAxis( beforeSegmentNormalized )
		betweenAfterPlaneDot = abs( euclidean.getPlaneDot( betweenCenterDotNormalized, beforeSegmentNormalizedWiddershins ) )
		if betweenAfterPlaneDot <= 0.0:
			return nextLocation
		centerDotDistance = radius / betweenAfterPlaneDot
		bevelLength = math.sqrt( centerDotDistance * centerDotDistance - radius * radius )
		radiusOverBevelLength = radius / bevelLength
		bevelLength = min( bevelLength, radius )
		bevelLength = min( afterSegmentExtension, bevelLength )
		beforePoint = self.oldLocation
		if beforeSegmentLength < bevelLength:
			bevelLength = beforeSegmentLength
		else:
			beforePoint = euclidean.getPointPlusSegmentWithLength( bevelLength, location, beforeSegment )
			self.addLinearMovePoint( self.feedRateMinute, beforePoint )
		self.shouldAddLine = False
		afterPoint = euclidean.getPointPlusSegmentWithLength( bevelLength, location, afterSegment )
		radius = bevelLength * radiusOverBevelLength
		centerDotDistance = radius / betweenAfterPlaneDot
		center = location + betweenCenterDotNormalized * centerDotDistance
		afterCenterSegment = afterPoint - center
		beforeCenterSegment = beforePoint - center
		afterCenterDifferenceAngle = euclidean.getAngleAroundZAxisDifference( afterCenterSegment, beforeCenterSegment )
		if afterCenterDifferenceAngle <= 0.0:
			self.addLinearMovePoint( self.getCornerFeedRate(), afterPoint )
			return afterPoint
		self.addArc( afterCenterDifferenceAngle, afterPoint, beforeCenterSegment, beforePoint, center )
		print( 'center' )
		print( center )
		print( afterCenterDifferenceAngle )
		print( centerComplex )
		print( differenceAngle )
		return afterPoint