Perpustakaan Ruby untuk Membuat & Render Grafik 3D & Pembangunan Permainan
Perpustakaan Ruby 3D Sumber Terbuka untuk Membuat dan Render Grafik & Adegan 3D dalam Pembangunan Permainan, Simulasi, dan Robotik melalui API Ruby Percuma.
Apakah Ray Library ?
Jika anda seorang pembangun Ruby yang menyukai DSL yang elegan dan gemar grafik berasaskan terminal, perpustakaan Ray adalah gem sumber terbuka yang patut anda periksa. Dicipta oleh Mon-Ouie, Ray menawarkan bahasa khusus domain (DSL) untuk membina grafik ASCII dan ANSI yang indah terus dalam terminal anda. Berbeza dengan perpustakaan grafik yang lebih berat, Ray menekankan kesederhanaan dan ekspresif, membolehkan anda mentakrifkan visual dengan kod yang minimum. Perpustakaan ini menyokong operasi ray 2D dan 3D, menjadikannya serbaguna untuk pelbagai jenis aplikasi. Mari kita selami beberapa ciri khusus yang ditawarkan oleh perpustakaan ini. Ia menyokong penyiapan Game/Tetingkap yang dipermudahkan (DSL), mencipta dan menguruskan adegan, melukis bentuk 2D biasa dan teks, mencipta bentuk geometri asas, penciptaan Matematik vektor, sokongan matriks transformasi khusus, sokongan rendering off-screen dan sebagainya.
Ray ialah DSL Ruby untuk melukis grafik terminal, membolehkan anda menentukan bentuk, warna, gradien, dan susun atur menggunakan sintaks deklaratif. Idea terasnya adalah menganggap terminal sebagai kanvas dan membina elemen grafik berstruktur yang boleh digabungkan seperti widget UI. Anggap ia seperti HTML dan CSS untuk terminal anda. Ia memanfaatkan kod melarikan diri ANSI dan aksara Unicode untuk memaparkan visual yang kompleks. Ray dapat memaparkan grafik menggunakan aksara Unicode dan simbol lukisan kotak, yang penting untuk mencipta susun atur yang tajam dan bersih dalam persekitaran terminal. Ray adalah perpustakaan Ruby kecil yang menyenangkan yang menangkap semangat minimalisme dan ekspresif. Walaupun ia mungkin tidak menggantikan rangka kerja TUI (Terminal User Interface) yang lengkap seperti curses atau tty, ia cemerlang dalam prototaip susun atur cepat, pemformatan output yang indah, dan menyediakan cara yang menyeronokkan, idiomatik Ruby untuk membina visual terminal.
Mula Menggunakan Ray
Cara paling mudah untuk memasang versi stabil Ray ialah menggunakan RubyGem. Sila gunakan perintah berikut untuk pemasangan yang lancar.
Pasang Ray melalui RubyGem
gem 'ray', github: 'Mon-Ouie/ray' Anda boleh memuat turun perpustakaan perkongsian yang telah dikompilasi dari repositori Github.
Visualisasi Raycasting Asas melalui Perpustakaan Ruby
Perpustakaan Ray Ruby membawa matematik 3D yang kuat dan keupayaan raycasting kepada pembangun Ruby dalam satu pakej yang elegan. Raycasting penting untuk mengesan persilangan antara sinar dan objek dalam ruang 2D atau 3D. Perpustakaan Ray menyediakan cara yang mudah untuk menembakkan sinar dan mendapatkan data perlanggaran. Berikut ialah contoh yang sangat berguna yang menunjukkan cara melakukan visualisasi raycasting asas menggunakan perpustakaan Ruby.
Bagaimana untuk Melakukan Visualisasi Raycasting Asas menggunakan Ruby?
require 'ray'
require 'ruby2d'
# Set up 2D window
set title: "Raycasting Demo", width: 800, height: 600
# Create a ray from center pointing at mouse
ray = Ray::Ray.new(origin: [400, 300], direction: [1, 0])
# Target circle
target = Circle.new(x: 500, y: 300, radius: 30, color: 'red')
update do
# Update ray direction toward mouse
ray.direction = [Window.mouse_x - 400, Window.mouse_y - 300].normalize
# Check intersection
if ray.intersect_circle(target.position, target.radius)
target.color = 'lime'
else
target.color = 'red'
end
end
show
Pengiraan Pantulan dan Pembiasan
Perpustakaan Ray sumber terbuka telah menyediakan sokongan lengkap untuk pengiraan pantulan dan pembiasan dalam aplikasi Ruby. Perpustakaan ini termasuk fungsi untuk mengira pantulan dan pembiasan sinar, yang berguna untuk kesan pencahayaan, cermin, dan simulasi optik. Berikut ialah contoh mudah yang menunjukkan kepada pembangun perisian cara mengira pantulan sinar menggunakan perpustakaan 3D Ruby.
Bagaimana untuk Mengira Pantulan Ray melalui Perpustakaan Ruby??
# Incident ray (light direction)
incident = Ray::Vector[1, -1, 0].normalize
# Surface normal
normal = [0, 1, 0]
# Calculate reflection
reflected = incident.reflect(normal)
puts "Reflected direction: #{reflected}"
Penjajaran dan Penempatan
Perpustakaan 3D Ray sumber terbuka telah menyediakan sokongan lengkap untuk penjajaran elemen 2D dan 3D dalam aplikasi Ruby. Ia menawarkan kaedah mudah untuk menyelaraskan dan menempatkan elemen: kaedah align, padding, dan margin memberi pemaju kawalan ke atas susun atur, serupa dengan model kotak CSS. Contoh mudah berikut menunjukkan cara mendapatkan pelbagai baris, yang dijajarkan ke kedua-dua hujung kanvas menggunakan arahan Ruby.
Bagaimana untuk Mendapatkan Pelbagai Garis, Selari dengan Kedua-dua Hujung Kanvas melalui API Ruby?
Ray.draw(width: 40, height: 10) do
text "Left aligned" do
align :left
end
text "Right aligned" do
align :right
end
end
Melukis Kotak dengan Sempadan Unicode
Perpustakaan Ray 3D memudahkan pemaju perisian untuk melukis Kotak dengan lukisan Unicode dalam aplikasi Ruby. Kotak menjadikan output terminal anda lebih terstruktur. Ray menggunakan aksara lukisan kotak Unicode untuk mencipta sempadan yang elegan. Kaedah box membungkus kandungan anda dalam sempadan kemas menggunakan aksara seperti ┌ ─ ┐ dan └ ┘ seperti yang ditunjukkan dalam contoh kod berikut.
Bagaimana untuk Membungkus Kandungan dalam Kotak Rapi dengan Sempadan menggunakan Perpustakaan Ruby?
Ray.draw(width: 50, height: 8) do
box do
text "Welcome to Ray UI!" do
align :center
end
end
end