Gerando alguns fractais com aleatoriedade
Defina uma lista L
de pivôs na tela;
Defina uma variável p
que armazenará o último pivô sorteado;
Defina uma variável x
que armazenará o último ponto desenhado;
Defina uma variável k
que armazenará um fator;
Caso L
esteja vazio, não faça nada;
Caso p
sejaNull
, p = L[0]
;
Caso x
sejaNull
, x = [p.x, p.y]
;
Selecione aleatoriamente um elemento do L
diferente de p
e armazene em c
;
Calcule dx
= k * (c.x - p[0])
;
Calcule dy
= k * (c.x - p[0])
;
Faça x = [p.x + dx, p.y + dy]
;
Faça p = c
;
Desenhe x
;
Execute tudo novamente;
def draw_dot(self):
if len(self.pivots) == 0:
return
if not self.last_pivot:
self.last_pivot = self.pivots[0]
if not self.last_dot:
self.last_dot = (self.last_pivot.x, self.last_pivot.y)
pivots_choosable = [ p for p in self.pivots if p != self.last_pivot ]
choiced_pivot = random.choice(pivots_choosable)
dx = self.factor * (choiced_pivot.x - self.last_dot[0])
dy = self.factor * (choiced_pivot.y - self.last_dot[1])
dot_position = (
self.last_dot[0] + dx,
self.last_dot[1] + dy
)
pygame.draw.circle(
self.display,
random.choice(self.dot_colors),
dot_position,
self.dot_size
)
self.last_pivot = choiced_pivot
self.last_dot = dot_position
Você precisará instalar o poetry caso não tenha.
Clone o repositório
git clone https://github.com/pab-h/PinDiceDistance
Execute no respositório clonado
poetry init
Execute o arquivo main.py
poetry run python pindicedistance/main.py
- Clique direito do mouse: Adiciona um pivô na tela
- 'a': Ativa o modo automático (Coloca pontos automáticamente)
- 's': Desativa o modo automático
- 'space': Coloca um ponto na tela
Altere-o conforme o necessário. Os campos são autoexplicativos
{
"pivot": "./assets/pivot.png",
"dot": {
"size": 1,
"colors": [
[121, 63, 223],
[112, 145, 245],
[151, 255, 244],
[255, 253, 140]
]
},
"factor": 0.5,
"fps": 120,
"display": [600, 600]
}