Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Usando cores em notação hexa (#FFFFFF) do Processing modo Java no modo Python #81

Closed
MarcioBonadiaa opened this issue Nov 13, 2020 · 2 comments

Comments

@MarcioBonadiaa
Copy link

MarcioBonadiaa commented Nov 13, 2020

Código desenvolvido e modificado em Java

// via https://www.openprocessing.org/sketch/150834

int columns=8;
int rows = columns;
float gap, theta, theta2;
color[] palette = {
  #7FFFD4, #66CDAA, #E9967A, #FA8072
};
color bg = #808080;

void setup() {
  size(500, 500);
  strokeWeight(0);
  gap=width/columns;
}

void draw() {
  background(bg);
  float theta2=PI/2;
  for (int i=0; i<columns; i++) {
    stroke(palette[i%palette.length], 220);
    fill(palette[i%palette.length], 170);
    theta2 += (TWO_PI/12);
    float offSetX = map(sin(theta2), -1, 1, 0, TWO_PI);
    for (int j=0; j<rows; j++) {
      float x = (.5+i)*gap;
      float y = (.5+j)*gap;
      float offSetY = (TWO_PI/rows*j);
      float sz = map(sin(theta+offSetX+offSetY), -1, 1, 5, gap*1.5);
      ellipse(x, y, sz, sz);
    }
  }
  theta -= 0;
}

Transcrito para Python com o auxílio do Professor Alexandre Villares

# via https://www.openprocessing.org/sketch/150834

rows = columns = 20
theta = 0

def cor_hexa(s):
    # conversor de hexa em cor
    return color(int(s[:2], 16), int(s[2:4], 16), int(s[4:6], 16))

def setup():
    global gap, palette, bg
    size(500, 500)
    strokeWeight(0)
    gap = width / columns
    # RRGGBB no Java é o número hexadecimal 0xRRGGBB no Python
    bg = cor_hexa('808080')
    palette = [cor_hexa('7FFFD4'),
               cor_hexa('66CDAA'),
               cor_hexa('E9967A'),
               cor_hexa('FA8072')]

def draw():
    global theta
    background(bg)
    theta2 = PI / 20
    for i in range(columns):
        stroke(palette[i % len(palette)], 220)
        fill(palette[i % len(palette)], 170)
        theta2 += TWO_PI / 120
        offSetX = map(sin(theta2), -1, 1, 0, TWO_PI)
        for j in range(rows):
            x = (.1 + i * 1.5) * gap
            y = (.15 + j) * gap
            offSetY = (TWO_PI / rows * j/2)
            sz = map(sin(theta + offSetX + offSetY), -1, 1, 5, gap * 1.2)
            ellipse(x, y, sz, sz)

@villares villares changed the title Transcrição Java2Python Usando cores em notação hexa (#FFFFFF) do modo Java no modo Python Nov 18, 2020
@villares villares changed the title Usando cores em notação hexa (#FFFFFF) do modo Java no modo Python Usando cores em notação hexa (#FFFFFF) do Processing modo Java no modo Python Nov 18, 2020
@villares
Copy link
Owner

villares commented Nov 18, 2020

Salve @MarcioBonadiaa, obrigado !

Isso acredito que vai dar um acréscimo muito interessante na documentação

Dá para usar a notação com # (cor hexa) entre aspas, como em fill("#FFAA00") nas funções fill(), background() e stroke() quando estamos no Processing modo Python. Mas infelizmente isso não funciona com a função color() e aí tive esse trabalho de criar uma função extra para facilitar a tradução desse exemplo.

Vou pensar em como acrescentar isso no material sobre cores!

def setup():
    verde = color_hex('#00FF00')
    fill(verde)
    rect(0, 0, 50, 100)
    azul = color_hex('0000FF')
    fill(azul)
    rect(50, 0, 50, 100)
    
def color_hex(s):
    """
    No Processing tradicional (Java) podemos indicar cores com a notação hexadecimal  #AABBCC
    No modo Python é possivel usar essa notação entre aspas em fill(), stroke() e
    background(), mas não é possível fazer isso com a função color().
    Esta função permite usar cores a partir de um string com a notação hexa no modo Python
    """
    if s.startswith('#'):
        s = s[1:]
    return color(int(s[:2], 16), int(s[2:4], 16), int(s[4:6], 16))

@villares
Copy link
Owner

villares commented Feb 5, 2021

@villares villares closed this as completed Feb 5, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants