def posMoveByY(self,movelength): h,j,c = self.getRenderPos() j+=movelength r,g,b = jch2rgb([j,c,h]) if r>255 or g>255 or b>255: return if r<=255 and r>=0 and g<=255 and g>=0 and b<=255 and b>=0: self.setRenderPos([j,c,h]) self.setPieceColor([r,g,b])
def _setJCH(self, j, c, h): self._j = j self._c = c self._h = h self._r,self._g,self._b=map(lambda x:int(x),\ jch2rgb([self._j,self._c,self._h])) while(self._r<0 or self._r>255 or\ self._g<0 or self._g>255 or\ self._b<0 or self._b>255): if self._c > 0: self._c -= 1 elif self._c < 1: self._c += 1 else: break self._r,self._g,self._b=map(lambda x:int(x),\ jch2rgb([self._j,self._c,self._h]))
def _respondC(self, c): self._c = c self._r, self._g, self._b = jch2rgb([self._j, self._c, self._h]) while(self._r<0 or self._r>255 or\ self._g<0 or self._g>255 or\ self._b<0 or self._b>255): if self._c > 0: self._c -= 1 elif self._c < 1: self._c += 1 else: break self._r, self._g, self._b = jch2rgb([self._j, self._c, self._h]) self._dockright.resetValue(self._j) self._docktop.resetValue(self._h) self._dockbottom.resetValue(self._c) self.update() self.ColorSender.emit(self, "JCH", [self._j, self._c, self._h])
def maxChromebyJH(j, h): c = 0.0 while True: R, G, B = jch2rgb([j, c, h]) if R > 255 or G > 255 or B > 255 or R < 0 or G < 0 or B < 0 or j == 0 or j == 100: break c += 1.0 #print(j,c,h,R,G,B) return c
def posRotateBy(self,hue): h,j,c = self.getRenderPos() h+=hue while h>=360: h -=360 while h<0: h += 360 r,g,b = jch2rgb([j,c,h]) if r>255 or g>255 or b>255: return if r<=255 and r>=0 and g<=255 and g>=0 and b<=255 and b>=0: self.setRenderPos([j,c,h]) self.setPieceColor([r,g,b])
def _respondH(self, h): while h >= 360: h -= 360 while h < 0: h += 360 self._h = h self._r, self._g, self._b = jch2rgb([self._j, self._c, self._h]) while(self._r<0 or self._r>255 or\ self._g<0 or self._g>255 or\ self._b<0 or self._b>255): if self._c > 0: self._c -= 1 elif self._c < 0: self._c += 1 else: break self._r, self._g, self._b = jch2rgb([self._j, self._c, self._h]) self._dockright.resetValue(self._j) self._docktop.resetValue(self._h) self._dockbottom.resetValue(self._c) self.update() self.ColorSender.emit(self, "JCH", [self._j, self._c, self._h])
def _respondJ(self, j): self._j = j self._r, self._g, self._b = jch2rgb([self._j, self._c, self._h]) while(self._r<0 or self._r>255 or\ self._g<0 or self._g>255 or\ self._b<0 or self._b>255): if self._c > 0: self._c -= 1 elif self._c < 0: self._c += 1 else: break # self._j,self._c,self._h =map(lambda x:int(x),\ # rgb2jch([self._r,self._g,self._b])) self._r, self._g, self._b = jch2rgb([self._j, self._c, self._h]) self._dockright.resetValue(self._j) self._docktop.resetValue(self._h) self._dockbottom.resetValue(self._c) self.update() self.ColorSender.emit(self, "JCH", [self._j, self._c, self._h])
def posMoveByZ(self,movelength): h,j,c = self.getRenderPos() height = c * np.sin(h*np.pi/180) width = c * np.cos(h*np.pi/180) c = (width**2 + (height+movelength)**2)**0.5 h = np.arctan2(height+movelength,width)*180/np.pi while h>=360: h -=360 while h<0: h += 360 r,g,b = jch2rgb([j,c,h]) if r>255 or g>255 or b>255: return if r<=255 and r>=0 and g<=255 and g>=0 and b<=255 and b>=0: self.setRenderPos([j,c,h]) self.setPieceColor([r,g,b])
def posScaleBy(self,size): h,j,c = self.getRenderPos() jbc = j-50 l = (jbc**2+c**2)**0.5 proj = jbc/l proc = c/l l += size if l<=0: l=0.5 jbc = l*proj c = l*proc j = jbc+50 r,g,b = jch2rgb([j,c,h]) if r>255 or g>255 or b>255: return if r<=255 and r>=0 and g<=255 and g>=0 and b<=255 and b>=0: self.setRenderPos([j,c,h]) self.setPieceColor([r,g,b])