Line() y for. Ayuda

Hola de nuevo.
Estoy intentando hacer estas lineas

Pero lo único que me salió fue así

No sé qué cosa tengo que cambiar para que una sola linea salga del centro, y no todas.

Gracias

Hola,

Recuerda que es mejor publicar tu código directamente como texto en el foro para que la gente pueda copiarlo y modificarlo.

Aquí hay una solución usando algunas transformaciones para repetir tus líneas 4 veces:

void setup(){
  size(500, 500);
}

void draw(){
  background(255);
  
  drawPattern(width/2, height/2, 300, 10);
  
  // Stops the draw loop
  noLoop();
}

void drawPattern(int x, int y, int size, int nbLines){
  pushMatrix();
  // Translate accordingly to the center of the pattern
  translate(x - size / 2, y - size / 2);
  
  // Draw the lines
  pushMatrix();
  for(int i=0; i<4; i++){
    drawLines(size, nbLines);
    // Translate to the next corner
    translate(size, 0);
    // Rotate 45°
    rotate(HALF_PI);
  }
  popMatrix();
  
  
  stroke(0);
  strokeWeight(3);
  
  // Draw diagonals
  line(0, 0, size, size);
  line(0, size, size, 0);
  
  // Draw rectangle
  noFill();
  rect(0, 0, size, size);
  
  popMatrix();
}

// Draw the lines from the left corner
void drawLines(int size, int nbLines){
  stroke(0);
  strokeWeight(2);
  
  for(int i=0; i<nbLines; i++){
    float diag = i * (size / nbLines / 2);
    line(diag, diag, i * (size / nbLines), 0);
  }
}

Capture d’écran de 2020-06-26 17-10-33

El principio es el siguiente:

La función drawLines dibuja las líneas desde la esquina superior izquierda. Le damos el tamaño de todo el rectángulo y el número de líneas a dibujar. Luego la función drawPattern dibuja todo el rectángulo, las diagonales y llama a la función para dibujar las líneas cuatro veces y cada vez rotando 45°.

2 Likes