Bibliotecă Ruby pentru crearea și redarea graficelor 3D & dezvoltarea de jocuri
Bibliotecă Ruby 3D open source pentru crearea și redarea graficelor și scenelor 3D în dezvoltarea de jocuri, simulări și robotică, prin API Ruby gratuit.
Ce este Ray Library ?
Dacă ești un dezvoltator Ruby cu pasiune pentru DSL-uri elegante și cu gust pentru grafice în terminal, biblioteca Ray este o gem open source care merită să fie descoperită. Creată de Mon-Ouie, Ray oferă un limbaj specific domeniului (DSL) pentru construirea de grafice frumoase ASCII și ANSI direct în terminalul tău. Spre deosebire de bibliotecile grafice mai grele, Ray pune accent pe simplitate și expresivitate, permițându-ți să definești vizuale cu cod minimal. Biblioteca suportă atât operații de rază 2D, cât și 3D, făcând-o versatilă pentru diferite tipuri de aplicații. Să explorăm câteva dintre caracteristicile specifice oferite de bibliotecă. Aceasta suportă configurarea simplificată a jocului/fereastrei (DSL), crearea și gestionarea scenelor, desenarea formelor 2D comune și a textului, crearea de forme geometrice de bază, crearea de matematică vectorială, suport pentru matrici de transformare personalizate, suport pentru redare off-screen și altele.
Ray este un DSL Ruby pentru desenarea graficelor în terminal, permițându-vă să definiți forme, culori, degradeuri și aranjamente folosind o sintaxă declarativă. Ideea de bază este să tratați terminalul ca pe o pânză și să construiți elemente grafice structurate care pot fi compuse ca widget-uri UI. Gândiți-vă la el ca la HTML și CSS pentru terminalul dumneavoastră. Profită de codurile de escape ANSI și de caracterele Unicode pentru a reda vizuale complexe. Ray poate reda grafice utilizând caractere Unicode și simboluri de desenare a casetelor, care sunt esențiale pentru crearea de aranjamente clare și precise în mediile de terminal. Ray este o mică bibliotecă Ruby încântătoare care surprinde spiritul minimalismului și expresivității. Deși s-ar putea să nu înlocuiască cadrele TUI (Terminal User Interface) complete precum curses sau tty, excelează în prototiparea rapidă a aranjamentelor, formatarea frumoasă a ieșirii și oferă o modalitate distractivă, idiomatică Ruby de a construi vizuale în terminal.
Începeți cu Ray
Cel mai simplu mod de a instala versiunea stabilă a Ray este prin utilizarea RubyGem. Vă rugăm să folosiți comanda următoare pentru o instalare fără probleme.
Instalați Ray prin RubyGem
gem 'ray', github: 'Mon-Ouie/ray' Poți descărca biblioteca partajată compilată de pe depozitul Github.
Vizualizare de bază a raycasting-ului prin Ruby Library
Biblioteca Ray Ruby aduce matematică 3D puternică și capabilități de raycasting dezvoltatorilor Ruby într-un pachet elegant. Raycasting este esențial pentru detectarea intersecțiilor dintre raze și obiecte într-un spațiu 2D sau 3D. Biblioteca Ray oferă o modalitate simplă de a emite raze și de a recupera datele de coliziune. Iată un exemplu foarte util care demonstrează cum să realizezi o vizualizare de bază a raycasting-ului utilizând biblioteca Ruby.
Cum să realizați vizualizarea de bază a raycasting-ului utilizând 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
Calculul reflexiei și refracției
Biblioteca open source Ray a oferit suport complet pentru calculele de reflexie și refracție în aplicațiile Ruby. Biblioteca include funcții pentru a calcula reflexiile și refracțiile razelor, care sunt utile pentru efecte de iluminare, oglinzi și simulări optice. Iată un exemplu simplu care demonstrează cum dezvoltatorii de software pot calcula reflexia razei utilizând biblioteca Ruby 3D.
Cum să calculați reflexia razei prin biblioteca 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}"
Aliniere și poziționare
Biblioteca open source 3D Ray a oferit suport complet pentru alinierea elementelor 2D și 3D în aplicațiile Ruby. Aceasta oferă metode simple pentru alinierea și poziționarea elementelor: metodele align, padding și margin oferă dezvoltatorilor control asupra aspectului, similar cu modelele de cutii CSS. Exemplul simplu de mai jos arată cum se pot obține linii multiple, aliniate la ambele capete ale pânzei utilizând comenzi Ruby.
Cum să obțineți linii multiple, aliniate la ambele capete ale pânzei prin API-ul Ruby?
Ray.draw(width: 40, height: 10) do
text "Left aligned" do
align :left
end
text "Right aligned" do
align :right
end
end
Desenarea casetelor cu borduri Unicode
Biblioteca Ray 3D facilitează dezvoltatorilor de software desenarea de casete cu caractere Unicode în aplicațiile Ruby. Casetele fac ieșirea terminalului mai structurată. Ray folosește caractere Unicode pentru desenarea casetelor pentru a crea borduri elegante. Metoda box învelește conținutul într-un bordură ordonată utilizând caractere precum ┌ ─ ┐ și └ ┘, așa cum se arată în exemplul de cod de mai jos.
Cum să înfășurați conținutul într-o cutie ordonată cu bordură utilizând biblioteca Ruby?
Ray.draw(width: 50, height: 8) do
box do
text "Welcome to Ray UI!" do
align :center
end
end
end