시에르핀스키 삼각형

8587 단어 javascriptgraphics


나는 며칠 전 저녁에 TikTok을 스크롤하고 있었는데 (그렇게 하기에는 너무 나이가 많은 것 같지만 가끔 금이 있습니다!) following video을 발견했습니다.

@flipperzer0 ♬ Levels - Live Session - Sarah Coponat


어쨌든, 시도해보고 싶은 마음에 p5 테스트를 해봤는데 잘 됩니다!

const points = [
  [-75, 130],
  [-150, 0],
  [-75, -130],
  [75, -130],
  [150, 0],
  [75, 130],
  [75, 130],
]

const rand = (int) => Math.round(Math.random() * int)

const width = 600
const height = 600


function setup() {
  createCanvas(width, height)
  noStroke()
}

function draw() {
  background(0)
  fill(255, 255, 255)
  text(points.length, 50, 50)
  points.forEach(point => {
    circle(point[0] + (width /2), point[1] + (height /2), 1)
  })
  populateArray(10000, points)
}

const populateArray = (count, arr) => {
  for(let i = 0; i < count; i++){
    const target = points[rand(6)]
    const source = points[points.length - 1]
    const point = [
      Math.round((source[0] + (2/3) * (target[0] - source[0]))),
      Math.round((source[1] + (2/3) * (target[1] - source[1])))
    ]
    if(points.indexOf(point) === -1){
      points.push(point)
    }else{
      console.info('Duplicate removed')
    }
  }
}



몇 가지 알 수 없는 이유로, 그리고 아주 가끔 패턴이 잘못됩니다. 왜 또는 어떻게 고칠 수 있는지 아는 사람이 있습니까?

이제 수정되었습니다. 찾을 수 있습니다here.

좋은 웹페이지 즐겨찾기