Ruby бібліотека для створення та рендерингу 3D графіки та розробки ігор
Відкрита Ruby 3D бібліотека для створення та рендерингу 3D графіки та сцен у розробці ігор, симуляціях та робототехніці за допомогою безкоштовного Ruby API.
Що таке Ray Library?
Якщо ви розробник Ruby, який любить елегантні DSL та має смак до графіки в терміналі, бібліотека Ray — це відкритий гем, який варто перевірити. Створена Mon-Ouie, Ray пропонує доменно-специфічну мову (DSL) для створення красивої ASCII та ANSI графіки безпосередньо у вашому терміналі. На відміну від важчих графічних бібліотек, Ray наголошує на простоті та виразності, дозволяючи визначати візуальні елементи за допомогою мінімального коду. Бібліотека підтримує як 2D, так і 3D операції з променями, що робить її універсальною для різних типів застосувань. Давайте розглянемо деякі конкретні можливості, які пропонує бібліотека. Вона підтримує спрощене налаштування Game/Window (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‑застосунках. Бібліотека включає функції для обчислення відбиття та заломлення променів, що корисно для освітлювальних ефектів, дзеркал та оптичних симуляцій. Ось простий приклад, який демонструє, як розробники програмного забезпечення можуть розраховувати відбиття променя за допомогою 3D‑бібліотеки Ruby.
Як обчислити відбиття променя за допомогою бібліотеки 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‑моделей коробок. Наведений нижче простий приклад показує, як отримати кілька рядків, вирівняних по обох кінцях полотна за допомогою 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