Ruby библиотека за създаване и рендиране на 3D графика и разработка на игри
Отворена Ruby 3D библиотека за създаване и рендиране на 3D графика и сцени в разработка на игри, симулации и роботика чрез безплатен Ruby API.
Какво е Ray Library ?
Ако сте Ruby разработчик, който обича елегантни DSL‑ове и има вкус към графика в терминала, библиотеката Ray е отворен код gem, който заслужава вашето внимание. Създадена от Mon-Ouie, Ray предлага домейн-специфичен език (DSL) за създаване на красиви ASCII и ANSI графики директно във вашия терминал. За разлика от по-тежките графични библиотеки, Ray поставя акцент върху простотата и изразителността, позволявайки ви да дефинирате визуализации с минимален код. Библиотеката поддържа както 2D, така и 3D операции с лъчи, което я прави гъвкава за различни видове приложения. Нека се задълбочим в някои от специфичните функции, предлагани от библиотеката. Тя поддържа опростена настройка на игра/прозорец (DSL), създаване и управление на сцени, рисуване на чести 2D форми и текст, създаване на базови геометрични форми, създаване на векторна математика, поддръжка на персонализирани трансформационни матрици, поддръжка на рендериране извън екрана и др.
Ray е Ruby DSL за рисуване на графика в терминала, позволяващ ви да дефинирате форми, цветове, градиенти и оформления, използвайки декларативен синтаксис. Основната идея е да третирате терминала като платно и да изграждате структурирани графични елементи, които могат да се комбинират като UI уиджети. Мислете за него като за HTML и CSS за вашия терминал. Той използва ANSI escape кодове и Unicode символи за рендиране на сложни визуализации. Ray може да рендира графика, използвайки Unicode символи и символи за чертане на кутии, които са от съществено значение за създаването на остри и чисти оформления в терминални среди. Ray е приятна малка Ruby библиотека, която улавя духа на минимализъм и изразителност. Въпреки че може да не замени пълноценни TUI (Terminal User Interface) рамки като curses или tty, тя превъзхожда в бързо прототипиране на оформления, красиво форматиране на изхода и предоставяне на забавен, Ruby-идиоматичен начин за създаване на терминални визуализации.
Започване с Ray
Най-лесният начин да инсталирате стабилната версия на Ray е чрез RubyGem. Моля, използвайте следната команда за гладка инсталация.
Инсталирайте Ray чрез RubyGem
gem 'ray', github: 'Mon-Ouie/ray' Можете да изтеглите компилираната споделена библиотека от Github репозитория.
Основна визуализация на Raycasting чрез Ruby библиотека
Библиотеката Ray Ruby предоставя мощни 3D математически функции и възможности за raycasting на Ruby разработчиците в елегантен пакет. Raycasting е от съществено значение за откриване на пресичания между лъчи и обекти в 2D или 3D пространство. Библиотеката Ray осигурява прост начин за изстрелване на лъчи и извличане на данни за сблъсъци. Ето много полезен пример, който демонстрира как да извършите базова визуализация на raycasting, използвайки Ruby библиотеката.
Как да извършите базова визуализация на Raycasting с 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
Изчисления за отражения и пречупвания
Отворената библиотека Ray предоставя пълна поддръжка за изчисления на отражения и пречупвания в Ruby приложения. Библиотеката включва функции за изчисляване на отражения и пречупвания на лъчи, които са полезни за светлинни ефекти, огледала и оптични симулации. Ето прост пример, който демонстрира как софтуерните разработчици могат да изчисляват отражения на лъчи, използвайки Ruby 3D библиотеката.
Как да изчислим отражението на лъча чрез 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}"
Подравняване и позициониране
Библиотеката с отворен код 3D Ray предоставя пълна поддръжка за подравняване на 2D и 3D елементи в Ruby приложения. Тя предлага прости методи за подравняване и позициониране на елементи: методите align, padding и margin дават на разработчиците контрол върху оформлението, подобно на CSS box моделите. Следният прост пример показва как да получим множество редове, подравнени към двата края на платното, използвайки Ruby команди.
Как да получим множество линии, подравнени към двата края на платното чрез Ruby API?
Ray.draw(width: 40, height: 10) do
text "Left aligned" do
align :left
end
text "Right aligned" do
align :right
end
end
Рисуване на кутии с Unicode граници
Библиотеката Ray 3D улеснява софтуерните разработчици да рисуват кутии с Unicode чертане в Ruby приложения. Кутии правят изхода на вашия терминал по-структуриран. Ray използва Unicode символи за чертане на кутии, за да създаде елегантни рамки. Методът box обвива вашето съдържание в чиста рамка, използвайки символи като ┌ ─ ┐ и └ ┘, както е показано в следния пример с код.
Как да обгърнете съдържанието в чиста кутия с рамка, използвайки Ruby библиотека?
Ray.draw(width: 50, height: 8) do
box do
text "Welcome to Ray UI!" do
align :center
end
end
end