【问题标题】:how do i make rainbow triangle rotating in processing Phyton, my teacher specifically asked me only to use stroke()我如何在处理 Phyton 时使彩虹三角形旋转,我的老师特别要求我只使用 stroke()
【发布时间】:2022-10-14 23:52:32
【问题描述】:

“练习 52:彩虹三角形 使用stroke()为旋转三角形草图的每个三角形着色。"

它应该如下所示:

上面是图片 我的代码:

def setup():
    colorMode(HSB) 
    size(600,600)
t = 0

def draw():
    global t
    background(255)#white
    translate (width/2, height/2)
    for i in range(90):
        stroke(3*i,255,255)
        rotate(radians(360/90))
        pushMatrix()
        translate(200,0)
        rotate(radians(t+2*i*360/90))
        tri(100)
        popMatrix()
    t += 0.5
 
def tri(length):
    noFill()
    triangle(0, -length, -length*sqrt(3)/2, length/2, length*sqrt(3)/2, length/2)
    

我的代码实际上创建了彩虹三角形,但我不允许使用 colorMode()

【问题讨论】:

  • 也许该课程解释了色彩空间并提供了在它们之间转换的功能(HSB/RGB)?否则,有大量资源(例如12。)

标签: processing


【解决方案1】:

请参阅HSL and HSV 并创建您自己的函数,将色调值转换为 RGB 颜色:

def setup(): 
    size(600,600)
t = 0

def toColor(v):
    return max(0, min(255, v*255))
def hueTotoRgb(hue):
    r = abs(hue * 6 - 3) - 1
    g = 2.0 - abs(hue * 6 - 2)
    b = 2.0 - abs(hue * 6 - 4)
    return (toColor(r), toColor(g), toColor(b))

def draw():
    global t
    background(255)#white
    translate (width/2, height/2)
    for i in range(90):
        stroke(*hueTotoRgb(float(i)/90))
        rotate(radians(360/90))
        pushMatrix()
        translate(200,0)
        rotate(radians(t+2*i*360/90))
        tri(100)
        popMatrix()
    t += 0.5
 
def tri(length):
    noFill()
    triangle(0, -length, -length*sqrt(3)/2, length/2, length*sqrt(3)/2, length/2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-22
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多