Matematika bilangan bulat dapat menghasilkan pola yang luar biasa ketika diletakkan di atas kisi-kisi. Bahkan fungsi paling dasar dapat menghasilkan desain yang rumit dan memukau!
Tantangan anda
Tulis 3 badan fungsi Tweetable (artinya 140 karakter atau kurang) untuk nilai merah, hijau, dan biru untuk gambar 1024x1024.
Input ke fungsi akan menjadi dua bilangan bulat i (nomor kolom untuk piksel yang diberikan) dan j (nomor baris untuk piksel yang diberikan) dan output akan menjadi pendek unsigned antara 0 dan 1023, inklusif, yang mewakili jumlah yang diberikan warna hadir dalam piksel (i, j).
Misalnya, tiga fungsi berikut menghasilkan gambar di bawah ini:
/* RED */
return (unsigned short)sqrt((double)(_sq(i-DIM/2)*_sq(j-DIM/2))*2.0);
/* GREEN */
return (unsigned short)sqrt((double)(
(_sq(i-DIM/2)|_sq(j-DIM/2))*
(_sq(i-DIM/2)&_sq(j-DIM/2))
));
/* BLUE */
return (unsigned short)sqrt((double)(_sq(i-DIM/2)&_sq(j-DIM/2))*2.0);
/* RED */
return i&&j?(i%j)&(j%i):0;
/* GREEN */
return i&&j?(i%j)+(j%i):0;
/* BLUE */
return i&&j?(i%j)|(j%i):0;
Aturan
- Dengan kode C ++ ini , gantikan fungsi Anda. Saya telah menyediakan beberapa makro dan telah memasukkan perpustakaan, dan Anda dapat memasukkan complex.h. Anda dapat menggunakan fungsi apa pun dari perpustakaan ini dan / atau makro saya. Tolong jangan gunakan sumber daya eksternal selain ini.
Jika versi itu tidak berfungsi untuk Anda, pastikan Anda mengkompilasi dengan:
g++ filename.cpp -std=c++11
Jika itu tidak berhasil, silakan gunakan versi alternatif menggunakan karakter yang tidak ditandatangani alih-alih celana pendek yang tidak ditandatangani.
Michaelangelo telah menyediakan versi keluaran warna 24-bit atau 48-bit yang dibersihkan .
- Anda dapat mengimplementasikan versi Anda sendiri dalam bahasa lain, tetapi harus berperilaku dengan cara yang sama seperti versi C ++ yang disediakan, dan hanya fungsi dari built-in C ++, perpustakaan, atau makro yang disediakan dapat digunakan untuk membuatnya adil.
- Posting hanya tiga badan fungsi Anda - mohon jangan sertakan kode saya dalam posting Anda
- Harap sertakan versi yang lebih kecil atau salinan gambar Anda yang disematkan. Mereka dibuat dalam format ppm dan mungkin perlu dikonversi ke yang lain untuk tampilan yang tepat di stackexchange.
- Badan fungsi (tidak termasuk tanda tangan) harus 140 karakter atau kurang.
- Ini adalah kontes popularitas - sebagian besar suara menang
sumber
Jawaban:
Mandelbrot 3 x 133 karakter
Hal pertama yang muncul di pikiran saya adalah "Mandelbrot!".
Ya, saya tahu sudah ada pengiriman mandelbrot. Setelah memastikan bahwa saya dapat memperolehnya di bawah 140 karakter sendiri, saya telah mengambil trik dan optimisasi dari solusi itu menjadi milik saya (terima kasih Martin dan Todd). Itu meninggalkan ruang untuk memilih lokasi yang menarik dan memperbesar, serta tema warna yang bagus:
Total 132 karakter
Saya mencoba menurunkannya ke 140 untuk semua 3 saluran. Ada sedikit noise warna di dekat tepi, dan lokasi tidak semenarik yang pertama, tetapi: 132 karakter
sumber
Taplak meja
Datar
Saya mulai menempatkan pola kotak-kotak / motif kotak ke dalam perspektif seperti taplak meja tanpa batas:
Riak
Lalu saya memperkenalkan riak (perspektif tidak sepenuhnya benar, tetapi masih dalam 140 karakter):
Warna
Lalu saya membuat beberapa warna lebih berbutir halus untuk memberikan detail pada skala yang lebih luas, dan untuk membuat gambar lebih berwarna ...
Bergerak
Mengurangi kode hanya sedikit lebih memungkinkan untuk mendefinisikan fase gelombang P dengan 2 tempat desimal, yang hanya cukup untuk frame yang cukup dekat untuk animasi yang halus. Saya telah mengurangi amplitudo pada tahap ini untuk menghindari penyakit laut, dan menggeser seluruh gambar hingga 151 piksel lebih lanjut (dengan biaya 1 karakter tambahan) untuk mendorong alias dari bagian atas gambar. Animasi aliasing sangat memesona.
sumber
#define P
. Diperlukan bermain golf untuk memungkinkan karakter tambahan#define P 6.03
.Pelukis acak
Berikut ini adalah entri berbasis keacakan. Untuk sekitar 0,1% dari piksel itu memilih warna acak, untuk yang lain itu menggunakan warna yang sama dengan piksel berdekatan yang acak. Perhatikan bahwa setiap warna melakukan ini secara independen, jadi ini sebenarnya hanya hamparan dari gambar hijau, biru dan merah acak. Untuk mendapatkan hasil yang berbeda pada proses yang berbeda, Anda harus menambahkan
srand(time(NULL))
kemain
fungsi.Sekarang untuk beberapa variasi.
Dengan melewatkan piksel, kita bisa membuatnya sedikit lebih buram.
Dan kemudian kita bisa perlahan-lahan mengubah warna, di mana luapan menghasilkan perubahan mendadak yang membuat ini terlihat lebih seperti sapuan kuas
Hal-hal yang perlu saya pahami:
srand
fungsi-fungsi itu tanpa mendapatkan segfault.Anda juga bisa membuat random walk isotropic, like
memberi Anda
Lebih banyak lukisan acak
Saya bermain-main dengan ini sedikit lebih dan membuat beberapa lukisan acak lainnya. Tidak semua ini dimungkinkan dalam keterbatasan tantangan ini, jadi saya tidak ingin memasukkannya di sini. Tapi Anda bisa melihatnya di galeri imgur ini bersama dengan beberapa deskripsi tentang bagaimana saya membuatnya.
Saya tergoda untuk mengembangkan semua kemungkinan ini menjadi sebuah kerangka kerja dan menaruhnya di GitHub. (Bukan berarti hal-hal seperti ini belum ada, tapi itu tetap menyenangkan!)
sumber
Beberapa hal runcing berputar
Ya, saya tahu persis apa namanya.
EDIT: Tidak lagi digunakan
pow
. EDIT 2: @PhiNotPi menunjukkan bahwa saya tidak perlu menggunakan abs terlalu banyak.Anda dapat mengubah titik referensi dengan cukup mudah untuk mendapatkan gambar yang berbeda:
@EricTressler menunjukkan bahwa gambar saya memiliki Batman di dalamnya.
sumber
Tentu saja, harus ada pengajuan Mandelbrot.
Mencoba memperbaiki skema warna sekarang. Apakah itu curang jika saya mendefinisikan komputasi sebagai makro
red_fn
dan menggunakan makro itu di dua lainnya sehingga saya memiliki lebih banyak karakter untuk pemilihan warna mewah dalam hijau dan biru?Sunting: Sangat sulit untuk menghasilkan skema warna yang layak dengan beberapa byte yang tersisa ini. Berikut ini satu versi lain:
Dan sesuai saran githubphagocyte dan dengan peningkatan Todd Lehman, kita dapat dengan mudah memilih bagian yang lebih kecil:
Misalnya
memberi
sumber
Julia mengatur
Jika ada Mandelbrot, harus ada set Julia juga.
Anda dapat menghabiskan waktu berjam-jam mengutak-atik parameter dan fungsi, jadi ini hanya yang cepat yang terlihat layak.
Terinspirasi dari partisipasi Martin.
Apakah Anda ingin RNG?
OK, komentar Sparr membuat saya di jalur untuk mengacak parameter Julias kecil ini. Saya pertama kali mencoba melakukan peretasan tingkat bit dengan hasil
time(0)
tetapi C ++ tidak mengizinkan litteral floating point heksadesimal jadi ini adalah jalan buntu (dengan pengetahuan saya yang terbatas setidaknya). Saya bisa menggunakan beberapa casting berat untuk mencapainya, tetapi itu tidak akan cocok dengan 140 byte.Saya tidak punya banyak ruang tersisa, jadi saya harus menjatuhkan Julia merah untuk meletakkan makro saya dan memiliki RNG yang lebih konvensional (
time
bibit dan nyatarand()
, woohoo!).Aduh, ada yang hilang. Jelas, parameter-parameter ini harus statis atau Anda memiliki beberapa hasil yang aneh (tapi lucu, mungkin saya akan menyelidiki sedikit kemudian jika saya menemukan sesuatu yang menarik).
Jadi di sinilah kita, dengan hanya saluran hijau dan biru:
Sekarang mari kita tambahkan pola merah sederhana untuk mengisi kekosongan. Tidak terlalu imajinatif, tapi saya bukan programmer grafis ... belum :-)
Dan akhirnya kode baru dengan parameter acak:
Masih ada ruang tersisa sekarang ...
sumber
Yang ini menarik karena tidak menggunakan parameter i, j sama sekali. Sebaliknya ia mengingat keadaan dalam variabel statis.
sumber
sumber
Buddhabrot (+ Antibuddhabrot)
Sunting: Ini Buddhabrot yang tepat sekarang!
Sunting: Saya berhasil membatasi intensitas warna dalam batas byte, sehingga tidak ada lagi piksel hitam palsu karena meluap.
Saya benar-benar ingin berhenti setelah empat ... tapi ...
Ini sedikit terkompresi selama pengunggahan (dan menyusut saat disematkan) jadi jika Anda ingin mengagumi semua detail, berikut ini adalah 512x512 menarik yang dipotong (yang tidak dikompresi dan ditampilkan dalam ukuran penuh):
Terima kasih kepada githubphagocyte untuk idenya. Ini membutuhkan beberapa penyalahgunaan tiga fungsi warna yang agak rumit:
Ada beberapa byte yang tersisa untuk skema warna yang lebih baik, tetapi sejauh ini saya belum menemukan apa pun yang mengalahkan gambar skala abu-abu.
Kode seperti yang diberikan menggunakan 4096x4096 titik awal dan melakukan hingga 500.000 iterasi pada masing-masing untuk menentukan apakah lintasan lolos atau tidak. Butuh waktu antara 6 dan 7 jam di mesin saya. Anda bisa mendapatkan hasil yang layak dengan grid 2k x 2k dan iterasi 10k, yang membutuhkan dua menit, dan bahkan hanya 1k x 1k grid dengan iterasi 1k terlihat cukup bagus (yang membutuhkan waktu 3 detik). Jika Anda ingin mengutak-atik parameter tersebut, ada beberapa tempat yang perlu diubah:
5e5
dalamBL
untuk menghitung iterasi Anda.4096
diRD
resolusi yang Anda inginkan dan1024.
diGR
dengan faktor yang sama untuk mempertahankan skala yang benar.return c[i][j]
dalamGR
karena itu hanya berisi jumlah absolut kunjungan setiap piksel. Warna maksimum tampaknya sebagian besar tidak tergantung pada jumlah iterasi dan skala secara linier dengan jumlah total titik awal. Jadi, jika Anda ingin menggunakan kotak 1k dengan 1k, Anda mungkin inginreturn c[i][j]*16;
atau serupa, tetapi faktor itu kadang-kadang membutuhkan beberapa biola.Bagi mereka yang tidak terbiasa dengan Buddhabrot (seperti saya beberapa hari yang lalu), ini didasarkan pada perhitungan Mandelbrot, tetapi intensitas setiap piksel adalah seberapa sering piksel itu dikunjungi dalam iterasi dari lintasan melarikan diri. Jika kami menghitung kunjungan selama lintasan yang tidak luput, itu adalah Antibuddhabrot. Ada versi yang lebih canggih yang disebut Nebulabrot di mana Anda menggunakan kedalaman rekursi yang berbeda untuk setiap saluran warna. Tapi aku akan menyerahkannya pada orang lain. Untuk informasi lebih lanjut, seperti biasa, Wikipedia .
Awalnya, saya tidak membedakan antara lintasan melarikan diri dan non-melarikan diri. Itu menghasilkan plot yang merupakan gabungan dari Buddhabrot dan Antibuddhabrot (seperti yang ditunjukkan oleh githubphagocyte).
Yang ini terlihat agak seperti foto yang pudar ... Saya suka itu.
sumber
Sierpinski Pentagon
Anda mungkin telah melihat metode permainan kekacauan untuk mendekati Segitiga Sierpinski dengan memplot poin setengah jalan ke vertex yang dipilih secara acak. Di sini saya telah mengambil pendekatan yang sama menggunakan 5 simpul. Kode terpendek yang bisa saya setujui termasuk hard coding 5 simpul, dan tidak ada cara saya akan memasukkan semuanya ke dalam 140 karakter. Jadi saya telah mendelegasikan komponen merah ke latar belakang sederhana, dan menggunakan ruang kosong di fungsi merah untuk mendefinisikan makro untuk membawa dua fungsi lainnya di bawah 140 juga. Jadi semuanya valid dengan biaya tidak memiliki komponen merah di pentagon.
Terima kasih kepada Martin Büttner untuk ide yang disebutkan dalam komentar pertanyaan tentang mendefinisikan makro dalam satu fungsi untuk kemudian digunakan dalam fungsi lain, dan juga untuk menggunakan memoisasi untuk mengisi piksel dalam urutan acak alih-alih terbatas pada urutan raster fungsi utama .
Gambar lebih dari 500KB sehingga secara otomatis dikonversi ke jpg oleh pertukaran tumpukan. Ini mengaburkan beberapa detail yang lebih halus, jadi saya juga menyertakan hanya bagian kanan atas sebagai png untuk menunjukkan tampilan asli:
sumber
Lembar musik
Musik Sierpinski. : D Orang-orang di obrolan mengatakan itu lebih mirip kertas untuk kotak musik.
Beberapa perincian tentang bagaimana ini bekerja ... um, sebenarnya hanya zoom-in untuk membuat beberapa segitiga Sierpinski yang bergelombang. Tampilan sheet-music (dan juga blockiness) adalah hasil dari pemotongan bilangan bulat. Jika saya mengubah fungsi merah menjadi, katakan,
pemotongan dihapus dan kami mendapatkan render resolusi penuh:
Jadi ya, itu menarik.
sumber
Diagram Voronoi acak siapa pembuat?
OK, yang ini memberi saya waktu yang sulit. Saya pikir itu cukup bagus, walaupun hasilnya tidak begitu artistik seperti yang lainnya. Itu kesepakatan dengan keacakan. Mungkin beberapa gambar menengah terlihat lebih baik, tetapi saya benar-benar ingin memiliki algoritma yang berfungsi penuh dengan diagram voronoi.
Sunting:
Ini adalah salah satu contoh dari algoritma final. Gambar pada dasarnya adalah superposisi dari tiga diagram voronoi, satu untuk setiap komponen warna (merah, hijau, biru).
Kode
ungolfed, versi komentar di akhir
Butuh banyak upaya, jadi saya merasa ingin berbagi hasil pada tahap yang berbeda, dan ada yang bagus (salah) untuk ditampilkan.
Langkah pertama: minta beberapa titik ditempatkan secara acak, dengan
x=y
Saya telah mengonversinya menjadi jpeg karena png asli terlalu berat untuk diunggah (
>2MB
), saya yakin itu lebih dari 50 warna abu-abu!Kedua: memiliki koordinat y yang lebih baik
Saya tidak mampu membuat tabel koordinat lain yang dihasilkan secara acak untuk
y
sumbu, jadi saya membutuhkan cara sederhana untuk mendapatkan yang " acak " dalam karakter sesedikit mungkin. Saya menggunakanx
koordinat titik lain dalam tabel, dengan melakukan bitwiseAND
pada indeks titik.Ke-3: Saya tidak ingat tapi itu semakin baik
Tetapi pada saat ini saya memiliki lebih dari 140 karakter, jadi saya perlu sedikit menurunkannya.
4: scanlines
Hanya bercanda, ini tidak diinginkan tapi agak keren, methinks.
Masih berupaya mengurangi ukuran algoritme, saya bangga mempersembahkan:
Edisi StarFox
Voronoi instagram
5: menambah jumlah poin
Saya sekarang memiliki sepotong kode yang berfungsi, jadi mari kita mulai dari 25 hingga 60 poin.
Itu sulit dilihat hanya dari satu gambar, tetapi titik-titiknya hampir semuanya berada dalam
y
kisaran yang sama . Tentu saja, saya tidak mengubah operasi bitwise,&42
jauh lebih baik:Dan di sinilah kita, pada titik yang sama dengan gambar pertama dari posting ini. Sekarang mari kita jelaskan kode untuk yang langka yang akan tertarik.
Kode tidak dijelaskan dan dijelaskan
Terima kasih sudah membaca sejauh ini.
sumber
Fraktal Lyapunov
String yang digunakan untuk menghasilkan ini adalah AABAB dan ruang parameter adalah [2,4] x [2,4]. ( penjelasan tentang string dan ruang parameter di sini )
Dengan ruang kode terbatas saya pikir pewarnaan ini cukup keren.
Saya juga membuat variasi dari set Mandelbrot. Ini menggunakan peta yang mirip dengan peta set Mandelbrot. Say M (x, y) adalah peta Mandelbrot. Maka M (sin (x), cos (y)) adalah peta yang saya gunakan, dan alih-alih memeriksa untuk melarikan diri nilai saya menggunakan x, dan y karena mereka selalu dibatasi.
SUNTING
Setelah banyak rasa sakit saya akhirnya membuat gif dari gambar kedua morphing. Ini dia:
sumber
Karena unicorn.
Saya tidak bisa mendapatkan versi OPs
unsigned short
dan nilai warna hingga 1023 berfungsi, jadi sebelum itu diperbaiki, berikut adalah versi yang menggunakanchar
dan nilai warna maksimum 255.sumber
Bukit Logistik
Fungsinya
Tidak disatukan
Semua definisi # harus sesuai BL di bawah 140 karakter. Berikut ini adalah versi algoritma biru yang tidak dipisahkan, sedikit dimodifikasi:
Di mana nilai-nilai x paling sering jatuh pada nilai r (j) yang diberikan, plot menjadi lebih terang (biasanya digambarkan lebih gelap).
sumber
Agregasi Difusi Terbatas
Saya selalu terpesona oleh agregasi terbatas difusi dan sejumlah cara yang berbeda muncul di dunia nyata.
Saya merasa sulit untuk menulis ini hanya dalam 140 karakter per fungsi jadi saya harus membuat kode yang mengerikan (atau indah, jika Anda suka hal-hal seperti
++d%=4
danfor(n=1;n;n++)
). Tiga fungsi warna saling memanggil dan menentukan makro untuk digunakan satu sama lain, sehingga tidak membaca dengan baik, tetapi masing-masing fungsi hanya di bawah 140 karakter.Untuk memvisualisasikan bagaimana partikel beragregasi secara bertahap, saya menghasilkan snapshot secara berkala. Setiap frame diproduksi dengan mengganti 1 in
for(n=1;n;n++)
dengan 0, -1 << 29, -2 << 29, -3 << 29, 4 << 29, 3 << 29, 2 << 29, 1 << 29, 1. Ini menyimpannya di bawah batas 140 karakter untuk setiap proses.Anda dapat melihat bahwa agregat yang tumbuh berdekatan satu sama lain saling menghilangkan partikel dan tumbuh lebih lambat.
Dengan membuat sedikit perubahan pada kode Anda dapat melihat partikel yang tersisa yang belum melekat pada agregat. Ini menunjukkan daerah yang lebih padat di mana pertumbuhan akan terjadi lebih cepat dan daerah yang sangat jarang di antara agregat di mana tidak ada pertumbuhan lagi dapat terjadi karena semua partikel telah habis.
Ini dapat dianimasikan dengan cara yang sama seperti sebelumnya:
sumber
Spiral (140 tepatnya)
Ini adalah 140 karakter tepat jika Anda tidak menyertakan header fungsi dan tanda kurung. Ini adalah kompleksitas spiral yang bisa saya muat dalam batas karakter.
Saya secara bertahap membangun di atas spiral sederhana, menambahkan pola pada tepi spiral dan bereksperimen dengan bagaimana spiral yang berbeda dapat digabungkan untuk terlihat keren. Berikut ini adalah versi yang tidak diklik dengan komentar menjelaskan apa yang masing-masing bagian lakukan. Mengolah parameter dapat menghasilkan beberapa hasil menarik.
Messing dengan parameter:
Di sini, spiral berbaris tetapi memiliki pola tepi yang berbeda. Alih-alih tepi gumpal dalam contoh utama, ini memiliki tepi seluruhnya terdiri dari gelombang dosa.
Di sini, gradien telah dihapus:
Animasi (
yang karena alasan tertentu sepertinya tidak berulang setelah saya unggah, maaf. Juga, saya harus memperkecilnya. Buka saja di tab baru jika Anda melewatkan animasi):Dan, inilah album imgur dengan semua gambar di dalamnya. Saya ingin melihat apakah ada yang bisa menemukan pola spiral keren lainnya. Juga, saya harus mengatakan, ini adalah salah satu tantangan paling keren di sini yang pernah saya lihat. Nikmati!
EDIT: Berikut adalah beberapa latar belakang yang dibuat dari spiral ini dengan parameter yang diubah.
Juga, dengan menggabungkan pola tepi spiral saya dengan beberapa fraktal yang saya lihat di sini melalui penggunaan xor / dan / atau operasi, berikut adalah spiral terakhir:
sumber
Penghargaan untuk klasik
V1 : Terinspirasi oleh DreamWarrior "Be happy", pengiriman langsung ini menanamkan gambar pixel-art kecil di setiap saluran warna. Saya bahkan tidak perlu kode golf!
V2 : sekarang dengan kode yang jauh lebih pendek & perbatasan hitam tebal yang mengisolasi hanya "layar permainan".
V3 : pesawat ruang angkasa, peluru, alien yang rusak dan perbatasan biru, oh my! Mencoba mengincar ini , secara kasar.
Saya kebetulan menemukan hasil edit oleh Umber Ferrule yang avatarnya menginspirasi saya untuk menambahkan entri berbasis pixel-art lainnya. Karena ide inti dari kode ini sebagian besar mirip dengan Space Invaders, saya menambahkannya ke entri ini, meskipun keduanya jelas memiliki poin tantangan yang berbeda. Untuk yang satu ini, mendapatkan warna pink tepat (dengan mengorbankan warna putih) dan fakta bahwa itu adalah sprite yang agak besar membuktikan tantangan yang bagus. Heksadesimal lolos (
\xFF
dll) di saluran merah mewakili karakter yang sesuai dalam file sumber (yaitu, saluran merah di file sumber berisi data biner), sedangkan lolos oktal adalah literal (yaitu hadir dalam file sumber).sumber
Lukisan Aksi
Saya ingin mencoba menciptakan kembali sesuatu yang mirip dengan karya Jackson Pollock - meneteskan dan menuangkan cat di atas kanvas horizontal. Meskipun saya menyukai hasilnya, kodenya terlalu panjang untuk dikirim ke pertanyaan ini dan upaya terbaik saya masih hanya menguranginya menjadi sekitar 600 byte. Jadi kode yang diposting di sini (yang masing-masing memiliki fungsi 139 byte, 140 byte, dan 140 byte) diproduksi dengan sejumlah besar bantuan dari beberapa orang genius dalam obrolan . Terima kasih banyak untuk:
untuk sesi golf grup tanpa henti.
Makro E (q) digunakan dalam fungsi RD dan GR. Mengubah nilai argumen mengubah cara komponen warna merah dan hijau berubah. Makro J berakhir dengan angka yang digunakan untuk menentukan berapa banyak perubahan komponen biru, yang pada gilirannya mempengaruhi komponen merah dan hijau karena mereka dihitung dari itu. Saya sudah memasukkan beberapa gambar dengan argumen merah dan hijau dari E yang bervariasi untuk menunjukkan variasi kombinasi warna yang mungkin. Arahkan kursor ke gambar untuk nilai merah dan hijau jika Anda ingin menjalankannya sendiri.
Semua gambar ini dapat dilihat dalam ukuran penuh jika Anda mengunduhnya. Ukuran file kecil karena warna datar sesuai dengan algoritma kompresi PNG, jadi tidak diperlukan kompresi lossy untuk mengunggah ke situs.
Jika Anda ingin melihat gambar dari berbagai tahap dalam proses bermain golf saat kami mencoba berbagai hal, Anda dapat melihat di obrolan melukis aksi .
sumber
Kupikir aku akan bermain dengan parameter kode ini ... Semua kredit jatuh ke @Manuel Kasten. Ini sangat keren sehingga saya tidak bisa menahan posting.
BubbleGumRupture http://i57.tinypic.com/3150eqa.png
SeussZoom http://i59.tinypic.com/am3ypi.png
SeussEternalForest http://i61.tinypic.com/35akv91.png
sumber
Sunting: Ini sekarang jawaban yang valid, terima kasih kepada deklarasi maju dari
GR
danBL
.Bersenang-senang dengan Q-sequence Hofstadter! Jika kita menggunakan jarak radial dari beberapa titik sebagai input dan output sebagai warna terbalik, kita mendapatkan sesuatu yang terlihat seperti vinil berwarna.
Urutannya sangat mirip dengan urutan Fibonacci, tetapi alih-alih mundur 1 dan 2 langkah dalam urutan, Anda mengambil dua nilai sebelumnya untuk menentukan seberapa jauh untuk kembali sebelum mengambil jumlah. Itu tumbuh kira-kira linier, tetapi setiap sekarang dan kemudian ada ledakan kekacauan (pada interval yang meningkat) yang kemudian mengendap ke urutan yang hampir linier lagi sebelum ledakan berikutnya:
Anda dapat melihat riak-riak ini dalam gambar setelah daerah yang terlihat sangat "datar" warnanya.
Tentu saja, menggunakan hanya satu warna itu membosankan.
Sekarang untuk kodenya. Saya membutuhkan fungsi rekursif untuk menghitung urutan. Untuk melakukan itu saya gunakan
RD
setiap kalij
negatif. Sayangnya, itu tidak meninggalkan karakter yang cukup untuk menghitung nilai saluran merah itu sendiri, jadiRD
pada gilirannya panggilanGR
dengan offset untuk menghasilkan saluran merah.Tentu saja, ini adalah kemungkinan penggunaan urutan yang paling sederhana, dan ada banyak karakter yang tersisa. Jangan ragu untuk meminjamnya dan melakukan hal-hal gila lainnya dengannya!
Berikut adalah versi lain di mana batas dan warna ditentukan oleh urutan-Q. Dalam hal ini, ada cukup ruang
RD
sehingga saya bahkan tidak memerlukan deklarasi maju:sumber
Ini menghitung transformasi Joukowsky dari satu set lingkaran konsentris yang berpusat pada titik yang sedikit diimbangi dari titik asalnya. Saya sedikit memodifikasi intensitas di saluran biru untuk memberikan sedikit variasi warna.
sumber
Objektif-C
Tulis ulang kode C ++ di Objective-C karena saya tidak bisa mengkompilasinya ... Ini memberikan hasil yang sama dengan jawaban lain ketika berjalan di iPad saya, jadi itu bagus.
Ini kiriman saya:
Kode di belakangnya cukup sederhana:
Anda dapat memperbesar kotak dengan mengalikan
i
danj
dengan0.5
,0.25
dll. Sebelum mereka diproses.sumber
x^(x-y)^y
(ini juga membuat saya kesal untuk kali pertama). Jika Anda memiliki kemampuan iOS, inilah kode saya: gist.github.com/Jugale/28df46f87037d81d2a8fSierpinski Paint Splash
Saya ingin bermain lebih banyak dengan warna jadi saya terus mengubah jawaban saya yang lain (yang berputar) dan akhirnya berakhir dengan ini.
Ini avatar saya sekarang. : P
sumber
Saya merasa terdorong untuk mengirimkan entri ini yang akan saya sebut "perilaku tidak terdefinisi", yang akan menggambarkan apa yang dilakukan kompiler Anda dengan fungsi yang seharusnya mengembalikan nilai tetapi tidak:
Semua piksel hitam:
Pixel semu-acak:
Dan, tentu saja, sejumlah hasil lainnya yang mungkin tergantung pada kompiler, komputer, manajer memori, dll.
sumber
asyik
Hanya beberapa trik trigonometri dan trik makro yang aneh.
RD:
GR:
BL:
EDIT: jika
M_PI
tidak diizinkan karena hanya ada pada sistem yang kompatibel dengan POSIX, itu dapat diganti dengan literal3.14
.sumber
acos(-1)
adalah pengganti yang bagus untukM_PI
.Saya tidak pandai matematika. Saya selalu siswa miskin di kelas matematika. Jadi saya membuatnya sederhana.
Saya menggunakan kode Javascript user1455003 yang dimodifikasi . Dan ini kode lengkap saya .
Ini sangat singkat sehingga ketiga fungsi cocok dalam satu tweet.
Fungsi lain yang sangat singkat. Saya menemukan pola sierpinski ini (dan beberapa pola singgung) sambil bermain-main dengan berbagai fungsi matematika. Ini adalah kode lengkap
sumber
i&j
merender segitiga Sierpinski sebenarnya. Itu luar biasa .JavaScript
Versi lain. badan fungsi tweetable.
Fungsi render gambar yang direvisi. draw (rgbFunctions, setCloseEvent);
Ungu
sumber
Pelukis Planet
Terinspirasi oleh entri Martin yang jelas luar biasa , ini adalah pandangan yang berbeda. Alih-alih menyemai sebagian piksel secara acak, saya mulai dengan sudut kiri atas sebagai RGB (512.512.512), dan berjalan secara acak pada setiap warna dari sana. Hasilnya terlihat seperti sesuatu dari teleskop (imo).
Setiap piksel mengambil rata-rata piksel di atas / kiri dan menambahkan sedikit secara acak. Anda dapat bermain dengan variabilitas dengan mengubah
p
variabel, tetapi saya pikir apa yang saya gunakan adalah keseimbangan yang baik (terutama karena saya suka biru, sehingga volatilitas yang lebih blur memberikan hasil yang baik).Ada sedikit bias negatif dari pembagian integer ketika rata-rata. Saya pikir itu berhasil, meskipun, dan memberikan efek gelap yang bagus ke sudut bawah.
Tentu saja, untuk mendapatkan lebih dari sekedar hasil tunggal, Anda harus menambahkan
srand()
garis ke fungsi utama Anda.sumber
Gelombang yang dipantulkan
Pola papan catur dasar terdistorsi sesuai dengan posisi gelombang yang meluas dari titik seperti batu yang dijatuhkan di kolam (sangat jauh dari akurat secara fisik!). Variabelnya
w
adalah jumlah piksel dari titik itu bahwa gelombang telah bergerak. Jikaw
cukup besar, gelombang memantul dari sisi gambar.w
= 225w
= 360w
= 5390Berikut adalah GIF yang menunjukkan suksesi gambar saat gelombang mengembang. Saya telah menyediakan sejumlah ukuran yang berbeda, masing-masing menunjukkan frame sebanyak batas ukuran file 500KB akan memungkinkan.
Jika saya dapat menemukan cara untuk memasangnya, idealnya saya ingin model gelombang dipodelkan sehingga gelombang terlihat lebih realistis ketika mereka melintas. Saya senang dengan refleksi itu.
Perhatikan bahwa saya belum benar-benar memodelkan refleksi gelombang dalam 3 lot 140 byte. Sebenarnya tidak ada pantulan apa pun yang terjadi, kebetulan terlihat seperti itu. Saya telah menyembunyikan penjelasannya jika ada yang ingin menebak lebih dulu:
sumber