2012-09-08 13 views
14

Fatto! Guarda in fondo al post !!!Sfida di programmazione: il modo più semplice per codificare questa griglia?

Le persone intelligenti del mondo ...

sto cercando di disegnare questo griglia utilizzando Processing (Java), ma sto avendo difficoltà a capire il modo più intelligente intorno a questo. Fondamentalmente potrei semplicemente tracciare ogni punto nella sezione ripetitiva, ma sono sicuro che c'è un modo migliore per aggirarlo.

grid

qualsiasi algoritmo e la lingua farà. Ho solo bisogno di vedere il concetto.

EDIT

aggiornato con l'immagine del logo. Questo dimostra fondamentalmente come ho bisogno di capacità di "sapere" quali aree sono vicini, al fine di creare una forma generativa dalla griglia:

logo

EDIT 2

La griglia è chiamato "griglia di otto volte quasi periodica" del designer.

EDIT 3

Va bene, che è stato più difficile di quanto pensassi. Ho fatto molti progressi, e qui puoi trovare il codice: https://gist.github.com/3682600

Ho la suddivisione che funziona perfettamente per entrambe le forme, tuttavia, quando avvio la ricorsione, qualcosa di strano sta succedendo. Questa è la mia uscita in questo momento:

test

Ogni aiuto è apprezzato!

Edit 4

Okay, questo si sta trasformando in un compito epico. Ho capito che il problema sorge quando la ricorsione diventa troppo profonda. O è un problema con la rotazione degli elementi, o è un'altra cosa che non riesco a capire. In ogni caso, ecco la bozza di lavoro che ho adesso:

working

Edit 5

l'ho fatta! Avevo incasinato le rotazioni dei cubi, che lo incasinavano. L'ho cambiato e funziona: https://gist.github.com/3682600. Ci possono essere un po 'troppe cose lì dentro, ma è totalmente funzionante. Dimostrazione:

leve1 level2 level3

+1

E qual è il nome particolare di questa griglia? Come è definito - quali sono le sue caratteristiche? – orlp

+0

Non è in elaborazione per JS, non Java? – Blender

+0

@nightcracker: quella sarebbe una risposta alla domanda :) – valdo

risposta

3

Se questo è effettivamente il Ammann-Beenker tiling @ n.m. menzionato in his comment, quindi lo si codificherebbe più facilmente utilizzando le regole di sottomissione fornite. Inizia con una tessera arbitraria e sostituiscila con tessere più piccole finché non hai un numero sufficiente di tessere per il tuo scopo. Si noti che le regole di sostituzione si riferiscono apparentemente a mezzo quadrato orientati.

+0

Im avendo problemi a leggere queste regole di sostituzione. Quali sono esattamente le prime forme che sto disegnando? Problemi nel trovare la letteratura su questo. – Ronze

+0

@Ronze: si inizia con * qualsiasi * tessera o combinazione di tessere. Se vuoi la simmetria di 8 volte, puoi iniziare con 8 rombi disposti attorno a un punto. Se lo vuoi semplice, prendine solo uno. Quindi suddividi ogni tessera in base alle regole. Troverò molta letteratura su [Penrose tilings] (https://en.wikipedia.org/wiki/Penrose_tiling), ne sono sicuro. Anche quelli possono essere costruiti usando le sostituzioni, quindi il concetto è praticamente lo stesso. – MvG

+0

Ah, questo ha senso! Eccezionale. Pubblicherò i risultati qui tra poche ore. – Ronze

4

Non sono sicuro che ci sarà un modo semplice, ho iniziato a cercare una sezione ripetuta, ma è quasi-periodico, o quasi ripetizione.

enter image description here

E 'ovviamente symetric attraverso le linee verdi, ma i modelli contrassegnati in blu in realtà non sembrano mostrare il modello di ciò che la griglia sarebbe simile esteso più lontano dal centro. Potrei sbagliarmi però.