Cara membuat pohon Natal jika Anda seorang ahli matematika

Selamat Tahun Baru 2021 untuk Habr dan Habrazhateli dan persembahkan kepada kita semua pohon Natal Fungsional (fYolka) yang bersahaja dan menyenangkan. Pada artikel ini saya akan memberi tahu Anda cara membuat pohon Natal di monitor dalam 10 menit. Saya akan mengabdikan artikel kedua saya tentang cara "membentuk" manusia salju, meletakkan hadiah di bawah pohon dan menaburkan semuanya dengan salju di atasnya.





Ide dasar

Seluruh gambar adalah satu set fungsi matematika dari dua argumen, x dan y. Semuanya didasarkan pada SDF dalam satu atau lain cara . Desmos.com digunakan untuk menggambar grafik .





Fungsi dasar

Batas nol

x + \ kiri | x \ kanan |





Elips

\ frac {\ left (x-2 \ right) ^ {2}} {3} + \ frac {\ left (y-3 \ right) ^ {2}} {1} = 1

pohon Natal

Mari kita gambarkan dasar pohon itu

- \ kiri (y-13 \ kanan) -2 \ kiri | x \ kanan | = 0

Tambahkan cabang

-0,2 \ cos \ kiri (6,8y \ kanan) \ kiri (y-13 \ kanan) -2 \ kiri | x \ kanan | = 0

Bawa ujung ranting ke tanah

-0,2 \ cos \ kiri (6,8y + 0,7 \ kiri | x \ kanan | \ kanan) \ kiri (y-13 \ kanan) -2 \ kiri | x \ kanan | = 0

Batasi pohon cemara dari atas

-0,2 \ cos \ kiri (6,8y + 0,7 \ kiri | x \ kanan | \ kanan) \ kiri (y-13 \ kanan) -2 \ kiri | x \ kanan | -0,51 \ kiri (y + \ kiri | y \ kanan | \ kanan) = 0

Spruce pindah ke bawah, ini akan diperbaiki nanti





Pukulan paralel: batasi dari bawah

Pembatas





2x = 5 \ kiri (y- \ kiri | y-2 \ kanan | \ kanan)





Hasil dari tahap ini





-0,2 \ cos \ kiri (6,8y + 0,7 \ kiri | x \ kanan | \ kanan) -2 \ kiri | x \ kanan | +5 \ kiri (y- \ kiri | y-2 \ kanan | \ kanan) = 0





Kami menggabungkan

-0,2 \ cos \ kiri (6,8y + 0,7 \ kiri | x \ kanan | \ kanan) \ kiri (y-13 \ kanan) -2 \ kiri | x \ kanan | -0,51 \ kiri (y + \ kiri | y \ kanan | \ kanan) +5 \ kiri (y- \ kiri | y-2 \ kanan | \ kanan) = 0

Sentuhan terakhir

2-0,2 \ cos \ kiri (6,8y + 0,7 \ kiri | x \ kanan | \ kanan) \ kiri (y-13 \ kanan) -2 \ kiri | x \ kanan | -0,51 \ kiri (y + \ kiri | y \ kanan | \ kanan) +5 \ kiri (y- \ kiri | y-2 \ kanan | \ kanan) = 0

Mari kita tangani bagasi

Elips dengan sudut lebih tajam

\ 0.1x ^ {10} +30 \ kiri (y-1 \ kanan) ^ {10} -1 = 0

Menggabungkan objek

Union, intersection dan cut didasarkan pada operasi min (a, b) yang paling sederhana. Bergantung pada tanda di depan a dan b, operasi Boolean yang berbeda diperoleh.





Dedaunan - a (xy), batang - b (xy)

-a \ le0, b \ le0

Akhir

\ min \ kiri (-a, b \ kanan) \ le0





Semua formula untuk disematkan di desmos.com

a = 2-0,2 \ cos \ kiri (6,8y + 0,7 \ kiri | x \ kanan | \ kanan) \ kiri (y-13 \ kanan) -2 \ kiri | x \ kanan | -0,51 \ kiri (y + \ kiri | y \ kanan | \ kanan) +5 \ kiri (y- \ kiri | y-2 \ kanan | \ kanan)





b \ = \ 0.1x ^ {10} +30 \ kiri (y-1 \ kanan) ^ {10} -1





\ min \ kiri (-a, \ b \ kanan) \ le0





Bersambung...








All Articles