Ejemplo n.º 1
0
	def trimmedEdge(self,parameter1, parameter2):
		"make a trimmed edge based on a start and end parameter on the same curve"
		"p1 and p2 are either points or parameters"
		print "Computing new edge: p1=%0.3f, p2=%0.3f, fp=%0.3f, lp=%0.3f" % (parameter1,parameter2,self.firstParameter,self.lastParameter);
		if abs(parameter1 - parameter2) < 0.0001:
			print "WARNING: removing degenerate edge";
			return None;
		e = OCCUtil.edgeFromTwoPointsOnCurve(self.handleCurve, parameter1, parameter2 );		
		return e;
Ejemplo n.º 2
0
 def trimmedEdge(self, parameter1, parameter2):
     "make a trimmed edge based on a start and end parameter on the same curve"
     "p1 and p2 are either points or parameters"
     print "Computing new edge: p1=%0.3f, p2=%0.3f, fp=%0.3f, lp=%0.3f" % (
         parameter1, parameter2, self.firstParameter, self.lastParameter)
     if abs(parameter1 - parameter2) < 0.0001:
         print "WARNING: removing degenerate edge"
         return None
     e = OCCUtil.edgeFromTwoPointsOnCurve(self.handleCurve, parameter1,
                                          parameter2)
     return e
Ejemplo n.º 3
0
	def _compute(self):
		(p1,p,p2) = (self.p1,self.closestParam, self.p2); #p1 < p < p2
		
		#i think this works well for small distance. not as well if d is large.
	
		if (p - p1) < (2.0)*self.distanceFromStartPoint:
			#TODO: this code is nearly same as the branch below but with p1 and p2 swapped,
			#connect to start vertex
			self.connectingPoint = self.edgeStart;
			self.connectingParm = p1;
			
			#compute shortened edge
			e1 = OCCUtil.edgeFromTwoPointsOnCurve(self.handleCurve,p1+self.trackWidth,p2);
			self.otherEdges = [e1];
			
			#enter the wire by connecting start to vertex directly			
			self.connectingEdges = [ OCCUtil.edgeFromTwoPoints(self.startPoint,self.connectingPoint) ];
			
		elif (p2 - p )< (2.0)*self.distanceFromStartPoint:
			#connect to end vertex
			self.connectingPoint = self.edgeEnd;
			self.connectingParm = p2;
			
			#compute shortened edge
			e1 = OCCUtil.edgeFromTwoPointsOnCurve(self.handleCurve,p1,p2-self.trackWidth);
			self.otherEdges = [e1];
			
			#enter the wire by connecting start to vertex directly			
			self.connectingEdges = [ OCCUtil.edgeFromTwoPoints(self.startPoint,self.connectingPoint) ];			
		else:
			#connect to middle of the edge
			self.connectingEdges = [];
			firstEdge = None;
			#which end is closer?
			if (p - p1) > (p2 - p ): #p2 is closer 
				pTarget = p + (2.0)*self.distanceFromStartPoint;
				pEnd = pTarget - self.trackWidth;
				secondEdge = OCCUtil.edgeFromTwoPointsOnCurve(self.handleCurve,pTarget,p2);
				self.otherEdges = [OCCUtil.edgeFromTwoPointsOnCurve(self.handleCurve,p1,pEnd) ];
			else: #p1 is closer
				pTarget = p - (2.0)*self.distanceFromStartPoint;
				pEnd = pTarget + self.trackWidth;
				secondEdge = OCCUtil.edgeFromTwoPointsOnCurve(self.handleCurve,p1,pTarget);
				self.otherEdges = [OCCUtil.edgeFromTwoPointsOnCurve(self.handleCurve,pEnd,p2) ];
				
			self.connectingParam = pTarget;
			self.connectingPoint = self.curve.Value(pTarget);
			self.connectingEdges.append( OCCUtil.edgeFromTwoPoints(self.startPoint, self.connectingPoint));
			self.connectingEdges.append(secondEdge);
Ejemplo n.º 4
0
    def _compute(self):
        (p1, p, p2) = (self.p1, self.closestParam, self.p2)
        #p1 < p < p2

        #i think this works well for small distance. not as well if d is large.

        if (p - p1) < (2.0) * self.distanceFromStartPoint:
            #TODO: this code is nearly same as the branch below but with p1 and p2 swapped,
            #connect to start vertex
            self.connectingPoint = self.edgeStart
            self.connectingParm = p1

            #compute shortened edge
            e1 = OCCUtil.edgeFromTwoPointsOnCurve(self.handleCurve,
                                                  p1 + self.trackWidth, p2)
            self.otherEdges = [e1]

            #enter the wire by connecting start to vertex directly
            self.connectingEdges = [
                OCCUtil.edgeFromTwoPoints(self.startPoint,
                                          self.connectingPoint)
            ]

        elif (p2 - p) < (2.0) * self.distanceFromStartPoint:
            #connect to end vertex
            self.connectingPoint = self.edgeEnd
            self.connectingParm = p2

            #compute shortened edge
            e1 = OCCUtil.edgeFromTwoPointsOnCurve(self.handleCurve, p1,
                                                  p2 - self.trackWidth)
            self.otherEdges = [e1]

            #enter the wire by connecting start to vertex directly
            self.connectingEdges = [
                OCCUtil.edgeFromTwoPoints(self.startPoint,
                                          self.connectingPoint)
            ]
        else:
            #connect to middle of the edge
            self.connectingEdges = []
            firstEdge = None
            #which end is closer?
            if (p - p1) > (p2 - p):  #p2 is closer
                pTarget = p + (2.0) * self.distanceFromStartPoint
                pEnd = pTarget - self.trackWidth
                secondEdge = OCCUtil.edgeFromTwoPointsOnCurve(
                    self.handleCurve, pTarget, p2)
                self.otherEdges = [
                    OCCUtil.edgeFromTwoPointsOnCurve(self.handleCurve, p1,
                                                     pEnd)
                ]
            else:  #p1 is closer
                pTarget = p - (2.0) * self.distanceFromStartPoint
                pEnd = pTarget + self.trackWidth
                secondEdge = OCCUtil.edgeFromTwoPointsOnCurve(
                    self.handleCurve, p1, pTarget)
                self.otherEdges = [
                    OCCUtil.edgeFromTwoPointsOnCurve(self.handleCurve, pEnd,
                                                     p2)
                ]

            self.connectingParam = pTarget
            self.connectingPoint = self.curve.Value(pTarget)
            self.connectingEdges.append(
                OCCUtil.edgeFromTwoPoints(self.startPoint,
                                          self.connectingPoint))
            self.connectingEdges.append(secondEdge)