Example #1
0
 def getLine(self):
     origin = self.getOrigin()
     pt1 = Geometry2D.Point(origin.x(),
                            origin.y() - self.getSliderHeight() / 2)
     pt2 = Geometry2D.Point(pt1.x() + self.getSliderWidth(), pt1.y())
     line = Geometry2D.LineSegment(pt1, pt2)
     return CVLineSegment(Colors.BLACK, 1, line)
Example #2
0
	def polyDrawer(self,event,x,y,flags,param):
		if event == cv.CV_EVENT_LBUTTONDOWN:
			print "Left button: Point x:%f, y:%f"%(x,y)
			self.newPoly.append(Geometry2D.Point(x,y))
			
		elif event == cv.CV_EVENT_RBUTTONDOWN:
			print "Right button"
			poly = Geometry2D.Polygon(*self.newPoly)
			cvPoly = CVPolygon(self.getDrawColor(),self.front(),poly)
			self.addCVShape(cvPoly)
			self.newPoly = []	
		
		elif len(self.newPoly) > 1:
			startPt = self.newPoly[-1]
			print "StartPoint", startPt
			endPt = Geometry2D.Point(x,y)
			print "End Point"
			line = Geometry2D.LineSegment(startPt,endPt)
			cvLine = CVLineSegment(self.lineColor,self.tempFront(),line)
		 #self.addTempCVShape(cvLine)
		for i, pt in enumerate(self.newPoly):
			self.highlightPt(pt)
			if i > 0:
				startPt = self.newPoly[i-1]
				line = Geometry2D.LineSegment(startPt,pt)
				cvLine = CVLineSegment(self.lineColor,self.tempFront(),line)
				self.addTempCVShape(cvLine)
			elif i == len(self.newPoly)-1:
				endPt = self.newPoly[0]
				line = Geometry2D.LineSegment(pt,endPt)
				cvLine = CVLineSegment(self.lineColor,self.tempFront(), line)
				self.addTempCVShape(cvLine)
Example #3
0
    def symmPolyDrawer(self, event, x, y, flags, param):
        if event == cv.CV_EVENT_LBUTTONDOWN:
            self.newPoly.append(Geometry2D.Point(x, y))

        elif event == cv.CV_EVENT_RBUTTONDOWN:
            print "MADE IT"
            backwards = list(self.newPoly)
            backwards.reverse()
            backwards = [pt.toTuple() for pt in backwards]
            for pt in backwards:
                print "Looking at pt"
                newpt = Vector2D.mirror_pt(pt, self.symmline)
                print newpt
                self.newPoly.append(Geometry2D.Point(newpt[0], newpt[1]))
                print "Added pt"
                print len(self.newPoly)
            poly = Geometry2D.Polygon(*self.newPoly)
            cvPoly = CVPolygon(self.getDrawColor(), self.front(), poly)
            self.addCVShape(cvPoly)
            self.newPoly = []

        elif len(self.newPoly) > 0:
            startPt = self.newPoly[-1]
            endPt = Geometry2D.Point(x, y)
            line = Geometry2D.LineSegment(startPt, endPt)
            cvLine = CVLineSegment(self.lineColor, self.tempFront(), line)
            self.addTempCVShape(cvLine)
        for i, pt in enumerate(self.newPoly):
            self.highlightPt(pt)
            if i > 0:
                startPt = self.newPoly[i - 1]
                line = Geometry2D.LineSegment(startPt, pt)
                cvLine = CVLineSegment(self.lineColor, self.tempFront(), line)
                self.addTempCVShape(cvLine)
Example #4
0
	def initBasic(self):
		#Line Drawing Members
		self.startPt = Geometry2D.Point(0,0)
		self.endPt = Geometry2D.Point(0,0)
		#Poly Drawing Members
		self.newPoly = []
		self.drawColor = Colors.GREEN
		self.lineColor = Colors.WHITE
Example #5
0
	def getShape(self):
		((buttonWidth,buttonHeight),baseline) = cv.GetTextSize(self.getText(),self.getFont())
		origin = self.getBottomLeft()
		xMin = origin.x()-4
		xMax = origin.x() + buttonWidth
		yMin = origin.y() - buttonHeight
		yMax = origin.y()+4
		return Geometry2D.Polygon(Geometry2D.Point(xMin,yMin),Geometry2D.Point(xMin,yMax),Geometry2D.Point(xMax,yMax),Geometry2D.Point(xMax,yMin))
Example #6
0
 def center_and_bound(self,points,bound):
     avgx = sum([pt.x() for pt in points]) / len(points)
     avgy = sum([pt.y() for pt in points]) / len(points)
     centered_pts = [Geometry2D.Point(pt.x()-avgx,pt.y()-avgy) for pt in points]
     scale = max([max(fabs(pt.x()),fabs(pt.y())) for pt in centered_pts])
     self.scale_factor = bound/(2.3*scale)
     self.x_offset = bound/2 - avgx*bound/(2.3*scale)
     self.y_offset = bound/2 - avgy*bound/(2.3*scale)
     return [Geometry2D.Point(pt.x()*bound/(2.3*scale)+bound/2,pt.y()*bound/(2.3*scale)+bound/2) for pt in centered_pts]
Example #7
0
 def initExtended(self):
     self.lineColor = Colors.BLACK
     self.foldline_pts = []
     self.foldline = None
     self.has_foldline = False
     clearShapesButton = CVButton(text="CLEAR",bottomLeft=Geometry2D.Point(50,100), onClick=self.clearAll)
     self.addOverlay(clearShapesButton)
     saveModelButton = CVButton(text="SAVE MODEL",bottomLeft=Geometry2D.Point(150,100), onClick = self.saveModel)
     self.addOverlay(saveModelButton)
     closeButton = CVButton(text="CLOSE",bottomLeft=Geometry2D.Point(350,100), onClick = self.close)
     self.addOverlay(closeButton)
Example #8
0
	def getBar(self):
		(valMin,valMax) = self.getRange()
		value = self.getValue()
		pct = (value - valMin) / (valMax - valMin)
		origin = self.getOrigin()
		barWidth = 5.0
		pt1 = Geometry2D.Point(origin.x()-barWidth/2 + pct*self.getSliderWidth(), origin.y())
		pt2 = Geometry2D.Point(pt1.x(),pt1.y() - self.getSliderHeight())
		pt3 = Geometry2D.Point(pt1.x()+barWidth,pt2.y())
		pt4 = Geometry2D.Point(pt3.x(),pt1.y())
		bar = Geometry2D.Polygon(pt1,pt2,pt3,pt4)
		return CVPolygon(Colors.invertCV(self.getColor()),1,bar)
Example #9
0
    def sockSkelDrawer(self, event, x, y, flags, param):
        if self.mode == 0:
            new_pt = Geometry2D.Point(x, y)
            self.ankle_center = new_pt
            if event == cv.CV_EVENT_LBUTTONUP:
                self.permanentHighlightPt(self.ankle_center)
                self.mode += 1
            else:
                self.highlightPt(self.ankle_center)
        elif self.mode == 1:
            new_pt = Geometry2D.Point(x, y)
            self.ankle_joint = new_pt
            if event == cv.CV_EVENT_LBUTTONUP:
                self.permanentHighlightPt(self.ankle_joint)
                self.permanentHighlightSegment(
                    Geometry2D.LineSegment(self.ankle_center,
                                           self.ankle_joint))
                self.mode += 1
            else:
                self.highlightPt(self.ankle_joint)
                self.highlightSegment(
                    Geometry2D.LineSegment(self.ankle_center,
                                           self.ankle_joint))

        elif self.mode == 2:
            new_pt = Geometry2D.Point(x, y)
            self.toe_center = new_pt
            if event == cv.CV_EVENT_LBUTTONUP:
                self.permanentHighlightPt(self.toe_center)
                self.permanentHighlightSegment(
                    Geometry2D.LineSegment(self.ankle_joint, self.toe_center))
                self.mode += 1
            else:
                self.highlightPt(self.toe_center)
                self.highlightSegment(
                    Geometry2D.LineSegment(self.ankle_joint, self.toe_center))

        elif self.mode == 3:
            new_pt = Geometry2D.Point(x, y)
            self.toe_top = new_pt
            self.sock_width = 2 * Geometry2D.distance(self.toe_top,
                                                      self.toe_center)
            if event == cv.CV_EVENT_LBUTTONUP:
                self.permanentHighlightPt(self.toe_top)
                self.permanentHighlightSegment(
                    Geometry2D.LineSegment(self.toe_center, self.toe_top))
                self.mode += 1
            else:
                self.highlightPt(self.toe_top)
                self.highlightSegment(
                    Geometry2D.LineSegment(self.toe_center, self.toe_top))
Example #10
0
	def handleEvents(self,event,x,y,flags,param):
		self.clearTemp()
		#Check buttons first
		onButton = False
		for button in self.getOverlay():
			if button.getShape().contains(Geometry2D.Point(x,y)):
				onButton = True
				if not button in self.last_mouseover_overlay:
					self.last_mouseover_overlay.append(button)
					button.onMouseOn(event,x,y,flags,param)
				button.onMouse(event,x,y,flags,param)
			else:
				if button in self.last_mouseover_overlay:
					self.last_mouseover_overlay.remove(button)
					button.onMouseOff(event,x,y,flags,param)
		if onButton:
			return
		thread.start_new_thread(self.onMouseLocked,(event,x,y,flags,param))
		if(self.shapeListeners()):
			for cvShape in self.getShapes():
				if cvShape in self.getHighlighted(x,y):
					if not cvShape in self.last_mouseover:
						self.last_mouseover.append(cvShape)
						cvShape.onMouseOn(event,x,y,flags,param)
					cvShape.onMouse(event,x,y,flags,param)
				else:
					if cvShape in self.last_mouseover:
						self.last_mouseover.remove(cvShape)
						cvShape.onMouseOff(event,x,y,flags,param)
		return
Example #11
0
	def snapToPoint(self,x,y):
		clickPt = Geometry2D.Point(x,y)
		min_distance = self.getSnapRange()
		for snapPt in self.snapPoints():
			if Geometry2D.distance(clickPt,snapPt) <= min_distance:
				return (snapPt.x(),snapPt.y())
		return (x,y)	
Example #12
0
	def lineDrawer(self,event,x,y,flags,param):
		if event == cv.CV_EVENT_LBUTTONDOWN:
			self.startPt = Geometry2D.Point(x,y)
		elif event == cv.CV_EVENT_LBUTTONUP:
			self.endPt = Geometry2D.Point(x,y)
			line = Geometry2D.DirectedLineSegment(self.startPt,self.endPt)
			self.addCVShape(CVDirectedLineSegment(cv.RGB(255,255,255),10,line,2))
		
		elif cv.CV_EVENT_FLAG_LBUTTON == flags-32:
			line = Geometry2D.DirectedLineSegment(self.startPt,Geometry2D.Point(x,y))
			self.addTempCVShape(CVDirectedLineSegment(cv.RGB(150,150,150),10,line,2))

		elif event == cv.CV_EVENT_RBUTTONDOWN:
			self.startPt = Geometry2D.Point(x,y)
		elif event == cv.CV_EVENT_RBUTTONUP:
			self.endPt = Geometry2D.Point(x,y)
			line = Geometry2D.DirectedLineSegment(self.startPt,self.endPt)
			self.addCVShape(CVDirectedLineSegment(cv.RGB(0,0,255),10,line,2))
		return
Example #13
0
 def initExtended(self):
     self.lineColor = Colors.BLACK
     if TYPE == SYMM:
         self.has_symmline = False
         self.symmline = None
         self.symmpts = []
     if TYPE == SWEATER_SKEL or TYPE == TEE_SKEL:
         self.mode = 0
         self.spine_bottom = None
         self.spine_top = None
         self.collar = None
         self.spine_arm_junction = None
         self.shoulder_joint = None
         self.shoulder_top = None
         self.sleeve_node = None
         self.sleeve_top = None
     if TYPE == PANTS_SKEL:
         self.mode = 0
         self.mid_center = None
         self.top_center = None
         self.mid_left = None
         self.left_leg_bottom = None
         self.left_leg_left = None
     if TYPE == SOCK_SKEL:
         self.mode = 0
         self.ankle_center = None
         self.ankle_joint = None
         self.toe_center = None
         self.toe_top = None
         self.sock_width = None
     clearShapesButton = CVButton(text="CLEAR",
                                  bottomLeft=Geometry2D.Point(50, 100),
                                  onClick=self.clearAll)
     self.addOverlay(clearShapesButton)
     saveModelButton = CVButton(text="SAVE MODEL",
                                bottomLeft=Geometry2D.Point(150, 100),
                                onClick=self.saveModel)
     self.addOverlay(saveModelButton)
     closeButton = CVButton(text="CLOSE",
                            bottomLeft=Geometry2D.Point(350, 100),
                            onClick=self.close)
     self.addOverlay(closeButton)
Example #14
0
 def poly_handler(self,stamped_poly):
     self.poly_frame = stamped_poly.header.frame_id
     self.z_offset = stamped_poly.z_offset
     points = [Geometry2D.Point(point.x,point.y) for point in stamped_poly.vertices]
     vertices = self.center_and_bound(points,500)
     poly = Geometry2D.Polygon(*vertices)
     self.poly_cache = poly
     cvPoly = CVPolygon(Colors.GREEN,self.gui.front(),poly)
     self.gui.clearShapes()
     self.gui.addCVShape(cvPoly)
     self.handle_automatic_folds(vertices)
Example #15
0
 def convert_from_world_frame(self,pt3D):
     now = rospy.Time.now()
     self.listener.waitForTransform(self.poly_frame,pt3D.header.frame_id,now,rospy.Duration(20.0))
     newpt = self.listener.transformPoint(self.poly_frame,pt3D)
     x = newpt.point.y * -1
     y = newpt.point.x * -1
     x *= self.scale_factor
     y *= self.scale_factor
     x += self.x_offset
     y += self.y_offset
     return Geometry2D.Point(x,y)
Example #16
0
 def symmLineDrawer(self, event, x, y, flags, param):
     if event == cv.CV_EVENT_LBUTTONUP:
         self.symmpts.append((x, y))
         print "ADDED PT"
         cv.Circle(self.background, (x, y), 3, cv.CV_RGB(0, 0, 0), -1)
         if len(self.symmpts) >= 2:
             self.symmline = Vector2D.make_ln_from_pts(
                 self.symmpts[0], self.symmpts[1])
             ln_start = Vector2D.intercept(self.symmline,
                                           Vector2D.horiz_ln(y=0))
             ln_end = Vector2D.intercept(
                 self.symmline, Vector2D.horiz_ln(y=self.background.height))
             cv.Line(self.background, ln_start, ln_end, cv.CV_RGB(0, 0, 0))
             self.has_symmline = True
             print self.symmline
     elif len(self.symmpts) > 0:
         self.addTempCVShape(
             CVLineSegment(
                 cv.CV_RGB(255, 255, 255), 2,
                 Geometry2D.LineSegment(
                     Geometry2D.Point(self.symmpts[0][0],
                                      self.symmpts[0][1]),
                     Geometry2D.Point(x, y))))
Example #17
0
    def polyDrawer(self, event, x, y, flags, param):
        if event == cv.CV_EVENT_LBUTTONDOWN:
            self.newPoly.append(Geometry2D.Point(x, y))

        elif event == cv.CV_EVENT_RBUTTONDOWN:
            poly = Geometry2D.Polygon(*self.newPoly)
            cvPoly = CVPolygon(self.getDrawColor(), self.front(), poly)
            self.addCVShape(cvPoly)
            self.newPoly = []

        elif len(self.newPoly) > 0:
            startPt = self.newPoly[-1]
            endPt = Geometry2D.Point(x, y)
            line = Geometry2D.LineSegment(startPt, endPt)
            cvLine = CVLineSegment(self.lineColor, self.tempFront(), line)
            self.addTempCVShape(cvLine)
        for i, pt in enumerate(self.newPoly):
            self.highlightPt(pt)
            if i > 0:
                startPt = self.newPoly[i - 1]
                line = Geometry2D.LineSegment(startPt, pt)
                cvLine = CVLineSegment(self.lineColor, self.tempFront(), line)
                self.addTempCVShape(cvLine)
Example #18
0
    def skelDrawer(self, event, x, y, flags, param):

        if self.mode == 0:
            #Draw spine_bottom
            print "Select midle of a spine_bottom"
            if event == cv.CV_EVENT_LBUTTONUP:
                self.spine_bottom = Geometry2D.Point(x, y)
                self.permanentHighlightPt(self.spine_bottom)
                self.mode += 1
            else:
                pass

        elif self.mode == 1:
            print "Select bottom point of a collar"
            if event == cv.CV_EVENT_LBUTTONUP:
                self.spine_top = Geometry2D.Point(x, y)
                self.permanentHighlightPt(self.spine_top)
                self.permanentHighlightSegment(
                    Geometry2D.LineSegment(self.spine_bottom, self.spine_top))
                self.mode += 1
            else:
                self.highlightSegment(
                    Geometry2D.LineSegment(self.spine_bottom,
                                           Geometry2D.Point(x, y)))

        elif self.mode == 2:
            #Draw collar
            print "Select left upper point of a collar"
            if event == cv.CV_EVENT_LBUTTONUP:
                self.collar = Geometry2D.Point(x, y)
                self.virtual_collar = Geometry2D.mirrorPt(
                    self.collar,
                    Geometry2D.LineSegment(self.spine_bottom, self.spine_top))
                self.permanentHighlightPt(self.collar)
                self.permanentHighlightSegment(
                    Geometry2D.LineSegment(self.spine_top, self.collar))
                self.permanentHighlightPt(self.virtual_collar)
                self.permanentHighlightSegment(
                    Geometry2D.LineSegment(self.spine_top,
                                           self.virtual_collar))
                self.mode += 1

            else:
                temp_collar = Geometry2D.Point(x, y)
                virtual_collar = Geometry2D.mirrorPt(
                    temp_collar,
                    Geometry2D.LineSegment(self.spine_bottom, self.spine_top))
                self.highlightPt(temp_collar)
                self.highlightSegment(
                    Geometry2D.LineSegment(self.spine_top, temp_collar))
                self.highlightPt(virtual_collar)
                self.highlightSegment(
                    Geometry2D.LineSegment(self.spine_top, virtual_collar))

        elif self.mode == 3:
            #Draw shoulder
            print "Select point between a left shoulder and a left armpit"
            new_pt = Geometry2D.Point(x, y)
            if event == cv.CV_EVENT_LBUTTONUP:
                self.shoulder_joint = new_pt
                self.virtual_shoulder_joint = Geometry2D.mirrorPt(
                    self.shoulder_joint,
                    Geometry2D.LineSegment(self.spine_bottom, self.spine_top))
                self.permanentHighlightPt(self.shoulder_joint)
                self.permanentHighlightPt(self.virtual_shoulder_joint)
                seg = Geometry2D.LineSegment(self.shoulder_joint,
                                             self.virtual_shoulder_joint)
                self.permanentHighlightSegment(seg)
                self.bottom_left = Geometry2D.Point(
                    self.spine_bottom.x() - 0.5 * seg.dx(),
                    self.spine_bottom.y() - 0.5 * seg.dy())
                self.bottom_right = Geometry2D.Point(
                    self.spine_bottom.x() + 0.5 * seg.dx(),
                    self.spine_bottom.y() + 0.5 * seg.dy())
                bottom_seg = Geometry2D.LineSegment(self.bottom_left,
                                                    self.bottom_right)
                self.permanentHighlightPt(self.bottom_left)
                self.permanentHighlightPt(self.bottom_right)
                self.permanentHighlightSegment(bottom_seg)
                self.mode += 1
            else:
                temp_shoulder_joint = new_pt
                virtual_shoulder_joint = Geometry2D.mirrorPt(
                    temp_shoulder_joint,
                    Geometry2D.LineSegment(self.spine_bottom, self.spine_top))
                self.highlightPt(temp_shoulder_joint)
                self.highlightPt(virtual_shoulder_joint)
                seg = Geometry2D.LineSegment(temp_shoulder_joint,
                                             virtual_shoulder_joint)
                self.highlightSegment(seg)
                bottom_left = Geometry2D.Point(
                    self.spine_bottom.x() - 0.5 * seg.dx(),
                    self.spine_bottom.y() - 0.5 * seg.dy())
                bottom_right = Geometry2D.Point(
                    self.spine_bottom.x() + 0.5 * seg.dx(),
                    self.spine_bottom.y() + 0.5 * seg.dy())
                bottom_seg = Geometry2D.LineSegment(bottom_left, bottom_right)
                self.highlightPt(bottom_left)
                self.highlightPt(bottom_right)
                self.highlightSegment(bottom_seg)

        elif self.mode == 4:
            #Draw shoulder
            print "Select point in a left shoulder"
            new_pt = Geometry2D.Point(x, y)
            if event == cv.CV_EVENT_LBUTTONUP:
                self.shoulder_top = new_pt
                seg = Geometry2D.LineSegment(self.shoulder_top,
                                             self.shoulder_joint)
                self.armpit = seg.extrapolate(2.0)
                self.virtual_shoulder_top = Geometry2D.mirrorPt(
                    self.shoulder_top,
                    Geometry2D.LineSegment(self.spine_bottom, self.spine_top))
                self.virtual_armpit = Geometry2D.mirrorPt(
                    self.armpit,
                    Geometry2D.LineSegment(self.spine_bottom, self.spine_top))
                self.permanentHighlightPt(self.shoulder_top)
                self.permanentHighlightPt(self.armpit)
                self.permanentHighlightPt(self.virtual_shoulder_top)
                self.permanentHighlightPt(self.virtual_armpit)
                self.permanentHighlightSegment(
                    Geometry2D.LineSegment(self.armpit, self.shoulder_top))
                self.permanentHighlightSegment(
                    Geometry2D.LineSegment(self.virtual_armpit,
                                           self.virtual_shoulder_top))
                self.mode += 1
            else:
                shoulder_top = new_pt
                seg = Geometry2D.LineSegment(shoulder_top, self.shoulder_joint)
                armpit = seg.extrapolate(2.0)
                virtual_shoulder_top = Geometry2D.mirrorPt(
                    shoulder_top,
                    Geometry2D.LineSegment(self.spine_bottom, self.spine_top))
                virtual_armpit = Geometry2D.mirrorPt(
                    armpit,
                    Geometry2D.LineSegment(self.spine_bottom, self.spine_top))
                self.highlightPt(shoulder_top)
                self.highlightPt(armpit)
                self.highlightPt(virtual_shoulder_top)
                self.highlightPt(virtual_armpit)
                self.highlightSegment(
                    Geometry2D.LineSegment(armpit, shoulder_top))
                self.highlightSegment(
                    Geometry2D.LineSegment(virtual_armpit,
                                           virtual_shoulder_top))

        elif self.mode == 5:
            #Draw sleeve
            print "Select midle point at the end of a left sleeve"
            new_pt = Geometry2D.Point(x, y)
            if event == cv.CV_EVENT_LBUTTONUP:
                self.sleeve_node = new_pt
                self.virtual_sleeve_node = Geometry2D.mirrorPt(
                    self.sleeve_node,
                    Geometry2D.LineSegment(self.spine_bottom, self.spine_top))
                self.permanentHighlightPt(self.sleeve_node)
                self.permanentHighlightPt(self.virtual_sleeve_node)
                self.permanentHighlightSegment(
                    Geometry2D.LineSegment(self.shoulder_joint,
                                           self.sleeve_node))
                self.permanentHighlightSegment(
                    Geometry2D.LineSegment(self.virtual_shoulder_joint,
                                           self.virtual_sleeve_node))
                self.mode += 1
            else:
                temp_sleeve_node = new_pt
                virtual_sleeve_node = Geometry2D.mirrorPt(
                    temp_sleeve_node,
                    Geometry2D.LineSegment(self.spine_bottom, self.spine_top))
                self.highlightPt(temp_sleeve_node)
                self.highlightPt(virtual_sleeve_node)
                self.highlightSegment(
                    Geometry2D.LineSegment(self.shoulder_joint,
                                           temp_sleeve_node))
                self.highlightSegment(
                    Geometry2D.LineSegment(self.virtual_shoulder_joint,
                                           virtual_sleeve_node))
        elif self.mode == 6:
            #Draw shoulder
            print "Select upper end point at the end of a left sleeve"
            new_pt = Geometry2D.Point(x, y)
            if event == cv.CV_EVENT_LBUTTONUP:
                self.sleeve_top = new_pt
                seg = Geometry2D.LineSegment(self.sleeve_top, self.sleeve_node)
                self.sleeve_bottom = seg.extrapolate(2.0)
                self.virtual_sleeve_top = Geometry2D.mirrorPt(
                    self.sleeve_top,
                    Geometry2D.LineSegment(self.spine_bottom, self.spine_top))
                self.virtual_sleeve_bottom = Geometry2D.mirrorPt(
                    self.sleeve_bottom,
                    Geometry2D.LineSegment(self.spine_bottom, self.spine_top))
                self.permanentHighlightPt(self.sleeve_top)
                self.permanentHighlightPt(self.sleeve_bottom)
                self.permanentHighlightPt(self.virtual_sleeve_top)
                self.permanentHighlightPt(self.virtual_sleeve_bottom)
                self.permanentHighlightSegment(
                    Geometry2D.LineSegment(self.sleeve_bottom,
                                           self.sleeve_top))
                self.permanentHighlightSegment(
                    Geometry2D.LineSegment(self.virtual_sleeve_bottom,
                                           self.virtual_sleeve_top))

                #self.addCVShape(CVPolygon(cv.CV_RGB(0,0,0),self.front(),
                #                Geometry2D.Polygon( self.bottom_left,self.armpit,self.sleeve_bottom,self.sleeve_top,self.shoulder_top,self.collar,
                #                                    self.virtual_collar,self.virtual_shoulder_top,self.virtual_sleeve_top,self.virtual_sleeve_bottom,self.virtual_armpit,self.bottom_right)))
                self.mode += 1
            else:
                sleeve_top = new_pt
                seg = Geometry2D.LineSegment(sleeve_top, self.sleeve_node)
                sleeve_bottom = seg.extrapolate(2.0)
                virtual_sleeve_top = Geometry2D.mirrorPt(
                    sleeve_top,
                    Geometry2D.LineSegment(self.spine_bottom, self.spine_top))
                virtual_sleeve_bottom = Geometry2D.mirrorPt(
                    sleeve_bottom,
                    Geometry2D.LineSegment(self.spine_bottom, self.spine_top))
                self.highlightPt(sleeve_top)
                self.highlightPt(sleeve_bottom)
                self.highlightPt(virtual_sleeve_top)
                self.highlightPt(virtual_sleeve_bottom)
                self.highlightSegment(
                    Geometry2D.LineSegment(sleeve_bottom, sleeve_top))
                self.highlightSegment(
                    Geometry2D.LineSegment(virtual_sleeve_bottom,
                                           virtual_sleeve_top))
Example #19
0
    def pantsSkelDrawer(self, event, x, y, flags, param):
        if self.mode == 0:
            new_pt = Geometry2D.Point(x, y)
            if event == cv.CV_EVENT_LBUTTONUP:
                self.mid_center = new_pt
                self.permanentHighlightPt(self.mid_center)
                self.mode += 1
        elif self.mode == 1:
            new_pt = Geometry2D.Point(x, y)
            if event == cv.CV_EVENT_LBUTTONUP:
                self.top_center = new_pt
                self.crotch = Geometry2D.LineSegment(
                    self.mid_center, self.top_center).extrapolate(-1)
                self.permanentHighlightPt(self.top_center)
                self.permanentHighlightPt(self.crotch)
                self.permanentHighlightSegment(
                    Geometry2D.LineSegment(self.crotch, self.top_center))
                self.mode += 1
            else:
                top_center = new_pt
                crotch = Geometry2D.LineSegment(self.mid_center,
                                                top_center).extrapolate(-1)
                self.highlightPt(top_center)
                self.highlightPt(crotch)
                self.highlightSegment(
                    Geometry2D.LineSegment(crotch, top_center))
        elif self.mode == 2:
            new_pt = Geometry2D.Point(x, y)
            if event == cv.CV_EVENT_LBUTTONUP:
                self.mid_left = new_pt
                self.mid_right = Geometry2D.mirrorPt(
                    self.mid_left,
                    Geometry2D.LineSegment(self.mid_center, self.top_center))
                self.permanentHighlightPt(self.mid_left)
                self.permanentHighlightPt(self.mid_right)

                self.permanentHighlightSegment(
                    Geometry2D.LineSegment(self.mid_left, self.mid_right))
                self.mode += 1
            else:
                mid_left = new_pt
                mid_right = Geometry2D.mirrorPt(
                    mid_left,
                    Geometry2D.LineSegment(self.mid_center, self.top_center))
                self.highlightPt(mid_left)
                self.highlightPt(mid_right)
                self.highlightSegment(
                    Geometry2D.LineSegment(mid_left, mid_right))
        elif self.mode == 3:
            new_pt = Geometry2D.Point(x, y)
            if event == cv.CV_EVENT_LBUTTONUP:
                self.left_leg_center = new_pt
                self.right_leg_center = Geometry2D.mirrorPt(
                    self.left_leg_center,
                    Geometry2D.LineSegment(self.mid_center, self.top_center))
                self.permanentHighlightPt(self.left_leg_center)
                self.permanentHighlightPt(self.right_leg_center)
                self.permanentHighlightSegment(
                    Geometry2D.LineSegment(self.left_leg_center,
                                           self.mid_left))
                self.permanentHighlightSegment(
                    Geometry2D.LineSegment(self.right_leg_center,
                                           self.mid_right))
                self.mode += 1
            else:
                left_leg_center = new_pt
                right_leg_center = Geometry2D.mirrorPt(
                    left_leg_center,
                    Geometry2D.LineSegment(self.mid_center, self.top_center))
                self.highlightPt(left_leg_center)
                self.highlightPt(right_leg_center)
                self.highlightSegment(
                    Geometry2D.LineSegment(left_leg_center, self.mid_left))
                self.highlightSegment(
                    Geometry2D.LineSegment(right_leg_center, self.mid_right))
        elif self.mode == 4:
            new_pt = Geometry2D.Point(x, y)
            if event == cv.CV_EVENT_LBUTTONUP:
                self.left_leg_left = new_pt
                self.left_leg_right = Geometry2D.LineSegment(
                    self.left_leg_center, self.left_leg_left).extrapolate(-1)
                self.right_leg_left = Geometry2D.mirrorPt(
                    self.left_leg_right,
                    Geometry2D.LineSegment(self.mid_center, self.top_center))
                self.right_leg_right = Geometry2D.mirrorPt(
                    self.left_leg_left,
                    Geometry2D.LineSegment(self.mid_center, self.top_center))
                self.permanentHighlightPt(self.left_leg_left)
                self.permanentHighlightPt(self.left_leg_right)
                self.permanentHighlightPt(self.right_leg_left)
                self.permanentHighlightPt(self.right_leg_right)
                self.permanentHighlightSegment(
                    Geometry2D.LineSegment(self.left_leg_left,
                                           self.left_leg_right))
                self.permanentHighlightSegment(
                    Geometry2D.LineSegment(self.right_leg_left,
                                           self.right_leg_right))
                top_displ = Geometry2D.ptDiff(self.top_center, self.mid_center)
                left_displ = Geometry2D.ptDiff(self.left_leg_left,
                                               self.left_leg_center)
                self.top_left = Geometry2D.ptSum(
                    Geometry2D.ptSum(self.mid_left, top_displ), left_displ)
                self.top_right = Geometry2D.mirrorPt(
                    self.top_left,
                    Geometry2D.LineSegment(self.mid_center, self.top_center))
                self.permanentHighlightPt(self.top_left)
                self.permanentHighlightPt(self.top_right)
                self.mode += 1
            else:
                left_leg_left = new_pt
                left_leg_right = Geometry2D.LineSegment(
                    self.left_leg_center, left_leg_left).extrapolate(-1)
                right_leg_left = Geometry2D.mirrorPt(
                    left_leg_right,
                    Geometry2D.LineSegment(self.mid_center, self.top_center))
                right_leg_right = Geometry2D.mirrorPt(
                    left_leg_left,
                    Geometry2D.LineSegment(self.mid_center, self.top_center))
                self.highlightPt(left_leg_left)
                self.highlightPt(left_leg_right)
                self.highlightPt(right_leg_left)
                self.highlightPt(right_leg_right)
                self.highlightSegment(
                    Geometry2D.LineSegment(left_leg_left, left_leg_right))
                self.highlightSegment(
                    Geometry2D.LineSegment(right_leg_left, right_leg_right))
                top_displ = Geometry2D.ptDiff(self.top_center, self.mid_center)
                left_displ = Geometry2D.ptDiff(left_leg_left,
                                               self.left_leg_center)
                top_left = Geometry2D.ptSum(
                    Geometry2D.ptSum(self.mid_left, top_displ), left_displ)
                top_right = Geometry2D.mirrorPt(
                    top_left,
                    Geometry2D.LineSegment(self.mid_center, self.top_center))
                self.highlightPt(top_left)
                self.highlightPt(top_right)
Example #20
0
	def getShape(self):
		pt1 = self.getOrigin()
		pt2 = Geometry2D.Point(pt1.x(),pt1.y()-self.getSliderHeight())
		pt3 = Geometry2D.Point(pt2.x()+self.getSliderWidth(),pt2.y())
		pt4 = Geometry2D.Point(pt3.x(),pt1.y())
		return Geometry2D.Polygon(pt1,pt2,pt3,pt4)
Example #21
0
	def getHighlighted(self,x,y):
		return [cvShape for cvShape in self.getShapes() if cvShape.getShape().contains(Geometry2D.Point(x,y))]