Ejemplo n.º 1
0
def test_str5_color():
    """Test the str5 functions for cmyk and hsv."""
    cornelltest.assert_equals(
        '(98.45, 25.36, 72.80, 1.000)',
        a3.str5_cmyk(colormodel.CMYK(98.448, 25.362, 72.8, 1.0)))
    cornelltest.assert_equals(
        '(1.000, 100.0, 23.12, 54.44)',
        a3.str5_cmyk(colormodel.CMYK(1, 100, 23.12345, 54.435)))
    cornelltest.assert_equals('(98.45, 0.000, 0.123)',
                              a3.str5_hsv(colormodel.HSV(98.448, 0, .123456)))
    cornelltest.assert_equals('(312.0, 0.500, 0.568)',
                              a3.str5_hsv(colormodel.HSV(312, 0.5, 0.56789)))
Ejemplo n.º 2
0
def test_str5_color():
    """Test the str5 functions for cmyk and hsv."""
    cornelltest.assert_equals(
        '(98.45, 25.36, 72.80, 1.000)',
        a3.str5_cmyk(colormodel.CMYK(98.448, 25.362, 72.8, 1.0)))
    cornelltest.assert_equals(
        '(100.0, 0.225, 83.50, 0.000)',
        a3.str5_cmyk(colormodel.CMYK(100.0, .2245, 83.5, 0.0)))
    cornelltest.assert_equals(
        '(56.00, 0.000, 0.987)',
        a3.str5_hsv(colormodel.HSV(55.999, 0.0, 0.9874234353442)))
    cornelltest.assert_equals(
        '(250.4, 1.000, 0.488)',
        a3.str5_hsv(colormodel.HSV(250.356, 1.0, .4878325345)))
Ejemplo n.º 3
0
Archivo: a3.py Proyecto: mfx22/CS1110
def rgb_to_hsv(rgb):
    """Return: color rgb in HSV color space.

    Formulae from wikipedia.org/wiki/HSV_color_space.
   
    Parameter rgb: the color to convert to a HSV object
    Precondition: rgb is an RGB object"""
    hsv = colormodel.HSV(0.0, 0.0, 0.0)

    r = rgb.red / 255.0
    g = rgb.green / 255.0
    b = rgb.blue / 255.0

    big = max(r, g, b)
    small = min(r, g, b)

    if big == small:
        hsv.hue = 0.0
    elif big == r and g >= b:
        hsv.hue = 60.0 * (g - b) / (big - small)
    elif big == r and g < b:
        hsv.hue = 60.0 * (g - b) / (big - small) + 360.0
    elif big == g:
        hsv.hue = 60.0 * (b - r) / (big - small) + 120.0
    elif big == b:
        hsv.hue = 60.0 * (r - g) / (big - small) + 240.0

    if big == 0:
        hsv.saturation = 0
    else:
        hsv.saturation = 1 - small / big

    hsv.value = big

    return hsv
Ejemplo n.º 4
0
 def on_hsv_press(self,h,s,v):
     """Call back to hsv button"""
     self.hsv = colormodel.HSV(h, s, v)
     temp = a3.hsv_to_rgb(self.hsv)
     assert (temp == None or type(temp) == colormodel.RGB), 'hsv_to_rgb does not return a RGB object'
     self.rgb = self.rgb if temp is None else temp
     self.cmyk = a3.rgb_to_cmyk(self.rgb);
     assert (self.cmyk == None or type(self.cmyk) == colormodel.CMYK), 'rgb_to_cmyk does not return a CMYK object'
     self.update()
Ejemplo n.º 5
0
def test_to_strings():
    """Test toString methods"""
    #Test rgb_to_string:()
    cunittest.assert_equals("(30, 240, 230)",
                            a3.rgb_to_string(colormodel.RGB(30, 240, 230)))

    #Test cmyk_to_string()
    cunittest.assert_equals("(10.00, 11.00, 20.00, 12.00)",
                            a3.cmyk_to_string(colormodel.CMYK(10, 11, 20, 12)))
    #Test that cmyk_to_string() uses round5(), not `truncate5()`:
    cunittest.assert_equals(
        "(10.01, 11.00, 20.01, 12.00)",
        a3.cmyk_to_string(colormodel.CMYK(10.005, 11.0045, 20.009, 12.001)))

    #Test hsv_to_string()
    cunittest.assert_equals("(100.0, 1.000, 1.000)",
                            a3.hsv_to_string(colormodel.HSV(100, 1, 1)))
    #Test that hsv_to_string uses round5(), not `truncate5()`:
    cunittest.assert_equals(
        "(100.0, 0.500, 0.499)",
        a3.hsv_to_string(colormodel.HSV(99.999, .4996, .4994)))
Ejemplo n.º 6
0
 def on_hsv_slide(self,h,s,v):
     """Call back to hsv sliders"""
     if not self.active:
         return
     hue = h / 100.0
     sat = s / 100.0
     val = v / 100.0
     self.hsv = colormodel.HSV(hue, sat, val)
     temp = a3.hsv_to_rgb(self.hsv)
     assert (temp == None or type(temp) == colormodel.RGB), 'hsv_to_rgb does not return a RGB object'
     self.rgb = self.rgb if temp is None else temp
     self.cmyk = a3.rgb_to_cmyk(self.rgb);
     assert (self.cmyk == None or type(self.cmyk) == colormodel.CMYK), 'rgb_to_cmyk does not return a CMYK object'
     self.update()
Ejemplo n.º 7
0
def test_hsv_to_rgb():
    """Test translation function hsv_to_rgb"""
    #hi = 0
    hsv = colormodel.HSV(0.0, 0.0, 0.0)
    rgb = a3.hsv_to_rgb(hsv)
    cornelltest.assert_equals(0, rgb.red)
    cornelltest.assert_equals(0, rgb.green)
    cornelltest.assert_equals(0, rgb.blue)

    hsv = colormodel.HSV(45.5, 0.34, 0.34)
    rgb = a3.hsv_to_rgb(hsv)
    cornelltest.assert_equals(87, rgb.red)
    cornelltest.assert_equals(80, rgb.green)
    cornelltest.assert_equals(57, rgb.blue)

    #hi = 1
    hsv = colormodel.HSV(80.0, 0.5, 0.123)
    rgb = a3.hsv_to_rgb(hsv)
    cornelltest.assert_equals(26, rgb.red)
    cornelltest.assert_equals(31, rgb.green)
    cornelltest.assert_equals(16, rgb.blue)

    #hi = 2
    hsv = colormodel.HSV(153.3, 0.9, 0.4)
    rgb = a3.hsv_to_rgb(hsv)
    cornelltest.assert_equals(10, rgb.red)
    cornelltest.assert_equals(102, rgb.green)
    cornelltest.assert_equals(61, rgb.blue)

    #hi = 3
    hsv = colormodel.HSV(181.1, 0.234, 0.432)
    rgb = a3.hsv_to_rgb(hsv)
    cornelltest.assert_equals(84, rgb.red)
    cornelltest.assert_equals(110, rgb.green)
    cornelltest.assert_equals(110, rgb.blue)

    #hi = 4
    hsv = colormodel.HSV(275.0, 0.175, 0.275)
    rgb = a3.hsv_to_rgb(hsv)
    cornelltest.assert_equals(65, rgb.red)
    cornelltest.assert_equals(58, rgb.green)
    cornelltest.assert_equals(70, rgb.blue)

    #hi = 5
    hsv = colormodel.HSV(359.9, 0.76, 0.765)
    rgb = a3.hsv_to_rgb(hsv)
    cornelltest.assert_equals(195, rgb.red)
    cornelltest.assert_equals(47, rgb.green)
    cornelltest.assert_equals(47, rgb.blue)
Ejemplo n.º 8
0
Archivo: a4.py Proyecto: mfx22/CS1110
def radiate_helper(t, side, n, sp):
    """Draws n straight radiating lines of length s at equal angles.
    
    This lines are drawn using turtle t with the turtle moving at speed sp.
    A line drawn at angle ang, 0 <= ang < 360 has HSV color (ang % 360.0, 1, 1).
    
    WHEN DONE, THE FOLLOWING TURTLE ATTRIBUTES ARE THE SAME AS IT STARTED:
    color, speed, visible, and drawmode. However, the final position and
    heading may be different. If you changed any of these four in the function,
    you must change them back.
    
    Parameter t: The drawing Turtle
    Precondition: t is a Turtle with drawmode True.
    
    Parameter side: The length of each radial line
    Precondition: side is a valid side length (number >= 0)
    
    Parameter n: The number of lines to draw
    Precondition: n is an int >= 2
    
    Parameter sp: The turtle speed.
    Precondition: sp is a valid turtle speed."""
    assert is_valid_turtlemode(t), report_error('Invalid turtle mode', t)
    assert is_valid_length(side), report_error('side is not a valid length',side)
    assert type(n) == int and n >=2, report_error('n is not a valid value',n)
    assert is_valid_speed(sp), report_error('sp is not a valid speed',sp)
    
    tempspeed = t.speed
    tempcolor = t.color
    tempvisible = t.visible
    tempdrawmode = t.drawmode
    tempx = t.x
    tempy = t.y
    
    t.speed = sp
    for x in range(n):
        t.color = colormodel.HSV(t.heading % 360.0, 1, 1)
        t.forward(side)
        t.move(tempx, tempy)
        t.left(360.0/n)
                
    t.speed = tempspeed
    t.color = tempcolor
    t.visible = tempvisible
    t.drawmode = tempdrawmode
Ejemplo n.º 9
0
def test_hsv_to_rgb():
    """Test translation function hsv_to_rgb"""
    #Test hsv_to_rgb() when H is in the interval [0,60):
    hsv = colormodel.HSV(42, .6, .7)
    rgb = a3.hsv_to_rgb(hsv)
    cunittest.assert_equals(179, rgb.red)
    cunittest.assert_equals(146, rgb.green)
    cunittest.assert_equals(71, rgb.blue)

    #Test hsv_to_rgb() when H is in the interval [60,120):
    hsv = colormodel.HSV(94, .5, .5)
    rgb = a3.hsv_to_rgb(hsv)
    cunittest.assert_equals(91, rgb.red)
    cunittest.assert_equals(128, rgb.green)
    cunittest.assert_equals(64, rgb.blue)

    #Test hsv_to_rgb() when H is in the interval [120,180):
    #Also tests that hsv_to_rgb() properly handles values at the borders of
    #each interval of H
    hsv = colormodel.HSV(120, .5, .5)
    rgb = a3.hsv_to_rgb(hsv)
    cunittest.assert_equals(64, rgb.red)
    cunittest.assert_equals(128, rgb.green)
    cunittest.assert_equals(64, rgb.blue)

    #Test hsv_to_rgb() when H is in the interval [180,240):
    hsv = colormodel.HSV(216, .6, .3)
    rgb = a3.hsv_to_rgb(hsv)
    cunittest.assert_equals(31, rgb.red)
    cunittest.assert_equals(49, rgb.green)
    cunittest.assert_equals(77, rgb.blue)

    #Test hsv_to_rgb() when H is in the interval [240,300):
    hsv = colormodel.HSV(256, .2, .8)
    rgb = a3.hsv_to_rgb(hsv)
    cunittest.assert_equals(174, rgb.red)
    cunittest.assert_equals(163, rgb.green)
    cunittest.assert_equals(204, rgb.blue)

    #Test hsv_to_rgb() when H is in the interval [300,360):
    hsv = colormodel.HSV(343, .7, .3)
    rgb = a3.hsv_to_rgb(hsv)
    cunittest.assert_equals(77, rgb.red)
    cunittest.assert_equals(23, rgb.green)
    cunittest.assert_equals(38, rgb.blue)
Ejemplo n.º 10
0
def rgb_to_hsv(rgb):
    """Return: color rgb in HSV color space.

    Formulae from wikipedia.org/wiki/HSV_color_space.
    
    Precondition: rgb is an RGB object"""

    assert (type(rgb) == colormodel.RGB), ('Value ' + ` rgb ` +
                                           ' is not an RGB object')

    R = rgb.red / 255.0
    G = rgb.green / 255.0
    B = rgb.blue / 255.0

    colors = [R, G, B]
    colors.sort()
    MIN = colors[0]
    MAX = colors[2]

    if MAX == MIN:
        H = 0
    elif MAX == R:
        if G >= B:
            H = 60.0 * (G - B) / (MAX - MIN)
        else:
            H = 60.0 * (G - B) / (MAX - MIN) + 360.0
    elif MAX == G:
        H = 60.0 * (B - R) / (MAX - MIN) + 120.0
    else:
        H = 60.0 * (R - G) / (MAX - MIN) + 240.0

    if MAX == 0:
        S = 0
    else:
        S = 1 - MIN / MAX

    return colormodel.HSV(H, S, MAX)
Ejemplo n.º 11
0
def rgb_to_hsv(rgb):
    """Return: color rgb in HSV color space.

    Formulae from wikipedia.org/wiki/HSV_color_space.
   
    Parameter rgb: the color to convert to a HSV object
    Precondition: rgb is an RGB object"""

    # Divide all rgb values by 255.0 to change range from 0..255.0 to 0..1.0
    r = rgb.red / 255.0
    g = rgb.green / 255.0
    b = rgb.blue / 255.0

    #Minimum and maximum of rgb values
    MAX = max(r, g, b)
    MIN = min(r, g, b)

    if MAX == MIN:
        h = 0
    elif MAX == r and g >= b:
        h = 60.0 * (g - b) / (MAX - MIN)
    elif MAX == r and g < b:
        h = 60.0 * (g - b) / (MAX - MIN) + 360.0
    elif MAX == g:
        h = 60.0 * (b - r) / (MAX - MIN) + 120.0
    elif MAX == b:
        h = 60.0 * (r - g) / (MAX - MIN) + 240.0

    if MAX == 0:
        s = 0
    else:
        s = 1 - MIN / MAX

    v = MAX

    return colormodel.HSV(h, s, v)
Ejemplo n.º 12
0
def test_hsv_to_rgb():
    """Test translation function hsv_to_rgb"""
    
    hsv= colormodel.HSV(20.00,1.000,1.000)
    rgb= a3.hsv_to_rgb(hsv)
    cornelltest.assert_equals( 255, rgb.red)
    cornelltest.assert_equals(84, rgb.green)
    cornelltest.assert_equals(0, rgb.blue)
    
    hsv= colormodel.HSV(60.00,1.000,1.000)
    rgb= a3.hsv_to_rgb(hsv)
    cornelltest.assert_equals( 255, rgb.red)
    cornelltest.assert_equals(255, rgb.green)
    cornelltest.assert_equals(0, rgb.blue)
    
    hsv= colormodel.HSV(120.00,1.000,1.000)
    rgb= a3.hsv_to_rgb(hsv)
    cornelltest.assert_equals( 0, rgb.red)
    cornelltest.assert_equals(255, rgb.green)
    cornelltest.assert_equals(0, rgb.blue)
    
    hsv= colormodel.HSV(180.00,1.000,1.000)
    rgb= a3.hsv_to_rgb(hsv)
    cornelltest.assert_equals( 0, rgb.red)
    cornelltest.assert_equals(255, rgb.green)
    cornelltest.assert_equals(255, rgb.blue)
    
    hsv= colormodel.HSV(240.00,1.000,1.000)
    rgb= a3.hsv_to_rgb(hsv)
    cornelltest.assert_equals( 0, rgb.red)
    cornelltest.assert_equals(0, rgb.green)
    cornelltest.assert_equals(255, rgb.blue)
    
    hsv= colormodel.HSV(300.00,1.000,1.000)
    rgb= a3.hsv_to_rgb(hsv)
    cornelltest.assert_equals( 255, rgb.red)
    cornelltest.assert_equals(0, rgb.green)
    cornelltest.assert_equals(255, rgb.blue)
Ejemplo n.º 13
0
def test_hsv_to_rgb():
    """Test translation function hsv_to_rgb"""
    hsv = colormodel.HSV(30.54, 1.0, 0.54321)
    rgb = a3.hsv_to_rgb(hsv)
    cornelltest.assert_equals(139, rgb.red)
    cornelltest.assert_equals(71, rgb.green)
    cornelltest.assert_equals(0, rgb.blue)

    hsv = colormodel.HSV(78.93, 0.33, 0.02)
    rgb = a3.hsv_to_rgb(hsv)
    cornelltest.assert_equals(5, rgb.red)
    cornelltest.assert_equals(5, rgb.green)
    cornelltest.assert_equals(3, rgb.blue)

    hsv = colormodel.HSV(125.666, 0.666, 1.00)
    rgb = a3.hsv_to_rgb(hsv)
    cornelltest.assert_equals(85, rgb.red)
    cornelltest.assert_equals(255, rgb.green)
    cornelltest.assert_equals(101, rgb.blue)

    hsv = colormodel.HSV(188.808, 0.001, .115)
    rgb = a3.hsv_to_rgb(hsv)
    cornelltest.assert_equals(29, rgb.red)
    cornelltest.assert_equals(29, rgb.green)
    cornelltest.assert_equals(29, rgb.blue)

    hsv = colormodel.HSV(255.22812234, .5532354326, .834098765432)
    rgb = a3.hsv_to_rgb(hsv)
    cornelltest.assert_equals(125, rgb.red)
    cornelltest.assert_equals(95, rgb.green)
    cornelltest.assert_equals(213, rgb.blue)

    hsv = colormodel.HSV(341.0928346, .4088, 0.9234)
    rgb = a3.hsv_to_rgb(hsv)
    cornelltest.assert_equals(235, rgb.red)
    cornelltest.assert_equals(139, rgb.green)
    cornelltest.assert_equals(170, rgb.blue)