Outra abordagem direta é usar seu próprio ruído de baixa frequência para desenhar (ou definir) uma figura em coordenadas polares.
Suponha que você queira um blob centralizado na origem, com raio médio 1; isso pode ser facilmente dimensionado e traduzido para outras posições e tamanhos. Imagine com a equação simples r = 1 - isso definiria um círculo de raio um na origem. Para adicionar uma pequena variação a ele, você pode alterar o raio sinusoidalmente - adicione um termo da forma w 1 * sin (θ + θ 1 ), onde w 1 e θ 1 são constantes às quais eu voltarei daqui a pouco. Um termo pecado não vai fazer um monte de diferença, mas ter vários diferentes senos de diferentes frequências vão começar a juntar exatamente o tipo de variação 'soft' Eu suspeito que você está depois. A forma geral seria ao longo das linhas de r = 1 + w 1 * sin (θ + θ 1 ) + w2 * sin (2θ + θ 2 ) + w * sin (5θ + θ 5 ) - ou mais termos, se desejar, claro.3 * sen (3θ + θ 3 ) + w 4 * sin (4θ + θ 4 ) + w 5
Então, como escolhemos os valores para w i e θ i ? Bem, os θs devem ser escolhidos aleatoriamente a partir de (0,2π) - em outras palavras, cada 'onda' na forma da superfície deve começar em um ponto diferente ao redor da forma. Quanto aos w, existem várias opções diferentes. Escolhendo w i aleatoriamente de (0, w) (para alguns w fixos que representam a 'variação geral' para dar a forma; eu poderia começar com w = 0,25, mas experimentar com w = 0,1) para cada i levará a chamado ruído branco , onde todas as frequências têm peso igual - este é de longe o mais blobbiest, com amplas variações em todas as frequências. Escolhendo w i aleatoriamente entre (0, w * (1 / i)) - em outras palavras, ruído , onde o peso diminui, mas lentamente. Isso também é conhecido como ruído 1 / f , e é o ruído 'fractal' mais famoso. Por fim, escolhendo os pesos aleatoriamente entre (0, w * (1 / i ^ 2)) (em outras palavras,browniano ruído - esse é o 'mais suave' dos três, com o menor variação de um círculo - geralmente será uma forma ovalada.
Aqui estão exemplos dos três, usando um 'peso total' de w = 0,25 e usando o mesmo conjunto de valores aleatórios para w i e θ i extraídos de random.org :
Blob "Ruído branco":
Blob "Pink Noise":
Blob "Ruído browniano":
Observe que esses blobs não serão perfeitos; em particular, é impossível que eles se curvem (já que para cada θ - em outras palavras, para todos os ângulos da origem - existe um único valor r), e se você não escolher seus pesos corretamente, eles poderão intersect (se r for permitido que seja negativo). Mas eles fazem um trabalho decente de serem convincentemente descarados e, na maioria dos aplicativos de jogos, os usuários não notam nenhum problema.