1. Producten
  2.   3D
  3.   Ruby
  4.   Ray
 
  

Ruby-bibliotheek om 3D-graphics te creëren & renderen & game-ontwikkeling

Open source Ruby 3D-bibliotheek voor het creëren en renderen van 3D-graphics & scènes in game-ontwikkeling, simulaties, en robotica via gratis Ruby API.

Wat is Ray Library?

Als je een Ruby-ontwikkelaar bent met een liefde voor elegante DSL's en een smaak voor terminalgebaseerde graphics, is de Ray-bibliotheek een open source gem die het bekijken waard is. Gecreëerd door Mon-Ouie, biedt Ray een domeinspecifieke taal (DSL) voor het bouwen van prachtige ASCII- en ANSI-graphics direct in je terminal. In tegenstelling tot zwaardere graphicsbibliotheken legt Ray de nadruk op eenvoud en expressiviteit, waardoor je visuals kunt definiëren met minimale code. De bibliotheek ondersteunt zowel 2D- als 3D-rayoperaties, waardoor hij veelzijdig is voor verschillende soorten toepassingen. Laten we enkele van de specifieke functies van de bibliotheek verkennen. Hij ondersteunt vereenvoudigde Game/Window-configuratie (DSL), het creëren en beheren van scènes, het tekenen van veelvoorkomende 2D-vormen en tekst, het maken van basisgeometrische vormen, vectorwiskunde, ondersteuning voor aangepaste transformatie-matrices, off-screen rendering-ondersteuning en meer.

Ray is een Ruby DSL voor het tekenen van terminalgrafieken, waarmee je vormen, kleuren, verlopen en lay-outs kunt definiëren met een declaratieve syntaxis. Het kernidee is om de terminal te behandelen als een canvas en gestructureerde grafische elementen te bouwen die kunnen worden samengesteld als UI-widgets. Beschouw het als HTML en CSS voor je terminal. Het maakt gebruik van ANSI-escapecodes en Unicode-tekens om complexe visuals weer te geven. Ray kan graphics renderen met Unicode-tekens en box-drawing-symbolen, die essentieel zijn voor het creëren van scherpe en nette lay-outs in terminalomgevingen. Ray is een charmante kleine Ruby-bibliotheek die de geest van minimalisme en expressiviteit vastlegt. Hoewel het geen volledige TUI-frameworks (Terminal User Interface) zoals curses of tty vervangt, blinkt het uit in snelle lay-outprototyping, mooie outputformattering en het bieden van een leuke, Ruby-idiomatische manier om terminalvisuals te bouwen.

Previous Next

Aan de slag met Ray

De gemakkelijkste manier om de stabiele release van Ray te installeren is via RubyGem. Gebruik alstublieft het volgende commando voor een soepele installatie.

Installeer Ray via RubyGem

gem 'ray', github: 'Mon-Ouie/ray' 

U kunt de gecompileerde gedeelde bibliotheek downloaden van de Github-repository.

Basis Raycasting-visualisatie via Ruby-bibliotheek

De Ray Ruby-bibliotheek brengt krachtige 3D-wiskunde en raycasting-mogelijkheden naar Ruby-ontwikkelaars in een elegant pakket. Raycasting is essentieel voor het detecteren van intersecties tussen stralen en objecten in een 2D- of 3D-ruimte. De Ray-bibliotheek biedt een eenvoudige manier om stralen te werpen en botsingsgegevens op te halen. Hier is een zeer nuttig voorbeeld dat laat zien hoe je basisraycasting-visualisatie uitvoert met de Ruby-bibliotheek.

Hoe voer je een basis Raycasting-visualisatie uit met 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

Berekeningen voor reflectie en breking

De open source Ray-bibliotheek biedt volledige ondersteuning voor reflectie- en brekingsberekeningen binnen Ruby-toepassingen. De bibliotheek bevat functies om rayreflecties en -brekingen te berekenen, wat nuttig is voor lichteffecten, spiegels en optische simulaties. Hier is een eenvoudig voorbeeld dat laat zien hoe softwareontwikkelaars rayreflectie kunnen berekenen met de Ruby 3D-bibliotheek.

Hoe bereken je Rayreflectie via Ruby-bibliotheek??

# 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}"

Uitlijning en positionering

De open source 3D Ray-bibliotheek biedt volledige ondersteuning voor uitlijning van 2D- en 3D-elementen binnen Ruby-toepassingen. Het biedt eenvoudige methoden om elementen uit te lijnen en te positioneren: align-, padding- en margin-methoden geven ontwikkelaars controle over de lay-out, vergelijkbaar met CSS-boxmodellen. Het volgende eenvoudige voorbeeld laat zien hoe je meerdere regels krijgt, uitgelijnd aan beide uiteinden van het canvas met Ruby-commando's.

Hoe krijg je meerdere lijnen, uitgelijnd aan beide uiteinden van het canvas via Ruby API?

Ray.draw(width: 40, height: 10) do
  text "Left aligned" do
    align :left
  end

  text "Right aligned" do
    align :right
  end
end

Boxtekeningen met Unicode-randen

De Ray 3D-bibliotheek maakt het voor softwareontwikkelaars eenvoudig om vakken te tekenen met Unicode-tekeningen binnen Ruby-toepassingen. Vakken maken je terminaloutput gestructureerder. Ray gebruikt Unicode-tekenreeksen voor vaklijnen om elegante randen te creëren. De box-methode omsluit je inhoud in een nette rand met tekens zoals ┌ ─ ┐ en └ ┘, zoals getoond in het volgende code‑voorbeeld.

Hoe wikkel je inhoud in een nette doos met rand met behulp van Ruby Library?

Ray.draw(width: 50, height: 8) do
  box do
    text "Welcome to Ray UI!" do
      align :center
    end
  end
end
 Dutch