रूबी लाइब्रेरी 3D ग्राफिक्स बनाने और रेंडर करने तथा गेम विकास के लिए
गेम विकास, सिमुलेशन और रोबोटिक्स में 3D ग्राफिक्स और दृश्यों को बनाने और रेंडर करने के लिए ओपन सोर्स रूबी 3D लाइब्रेरी, मुफ्त रूबी API के माध्यम से।
Ray लाइब्रेरी क्या है?
यदि आप एक Ruby डेवलपर हैं जो सुंदर DSLs के प्रति प्रेम रखते हैं और टर्मिनल-आधारित ग्राफिक्स का स्वाद पसंद करते हैं, तो Ray लाइब्रेरी एक ओपन सोर्स जेम है जिसे देखना चाहिए। Mon-Ouie द्वारा निर्मित, Ray एक डोमेन-विशिष्ट भाषा (DSL) प्रदान करता है जिससे आप अपने टर्मिनल में सुंदर ASCII और ANSI ग्राफिक्स बना सकते हैं। भारी ग्राफिक्स लाइब्रेरीज़ के विपरीत, Ray सरलता और अभिव्यक्तित्व पर ज़ोर देता है, जिससे आप न्यूनतम कोड के साथ विज़ुअल्स को परिभाषित कर सकते हैं। यह लाइब्रेरी 2D और 3D दोनों रे ऑपरेशन्स को सपोर्ट करती है, जिससे यह विभिन्न प्रकार के अनुप्रयोगों के लिए बहुमुखी बनती है। चलिए लाइब्रेरी द्वारा प्रदान की गई कुछ विशिष्ट सुविधाओं में गहराई से देखते हैं। यह सरलित Game/Window सेटअप (DSL), सीन बनाना और प्रबंधित करना, सामान्य 2D आकार और टेक्स्ट ड्रॉ करना, बुनियादी ज्यामितीय आकार बनाना, वेक्टर गणित निर्माण, कस्टम ट्रांसफ़ॉर्मेशन मैट्रिक्स समर्थन, ऑफ-स्क्रीन रेंडरिंग समर्थन आदि को सपोर्ट करती है।
Ray एक Ruby DSL है टर्मिनल ग्राफिक्स बनाने के लिए, जो आपको आकृतियों, रंगों, ग्रेडिएंट्स और लेआउट को डिक्लेरेटिव सिंटैक्स का उपयोग करके परिभाषित करने की अनुमति देता है। मुख्य विचार यह है कि टर्मिनल को एक कैनवास के रूप में माना जाए और संरचित ग्राफिकल तत्व बनाए जाएँ जिन्हें UI विजेट्स की तरह संयोजित किया जा सके। इसे अपने टर्मिनल के लिए HTML और CSS की तरह सोचें। यह ANSI एस्केप कोड्स और यूनिकोड कैरेक्टर्स का उपयोग करके जटिल विजुअल्स रेंडर करता है। Ray यूनिकोड कैरेक्टर्स और बॉक्स-ड्रॉइंग सिम्बॉल्स का उपयोग करके ग्राफिक्स रेंडर कर सकता है, जो टर्मिनल वातावरण में तेज़ और साफ़ लेआउट बनाने के लिए आवश्यक हैं। Ray एक आनंददायक छोटा Ruby लाइब्रेरी है जो न्यूनतावाद और अभिव्यक्तित्व की भावना को पकड़ता है। जबकि यह curses या tty जैसे पूर्ण‑स्तरीय TUI (टर्मिनल यूज़र इंटरफ़ेस) फ्रेमवर्क को प्रतिस्थापित नहीं कर सकता, यह तेज़ लेआउट प्रोटोटाइपिंग, सुंदर आउटपुट फ़ॉर्मेटिंग, और टर्मिनल विज़ुअल्स बनाने का एक मज़ेदार, Ruby‑इडियोमैटिक तरीका प्रदान करता है।
Ray के साथ शुरुआत
Ray के स्थिर रिलीज़ को स्थापित करने का सबसे आसान तरीका RubyGem का उपयोग करना है। कृपया सुगम स्थापना के लिए निम्नलिखित कमांड का उपयोग करें।
RubyGem के माध्यम से Ray स्थापित करें
gem 'ray', github: 'Mon-Ouie/ray' आप गिटहब रिपॉज़िटरी से संकलित साझा लाइब्रेरी डाउनलोड कर सकते हैं।
Ruby लाइब्रेरी के माध्यम से बुनियादी रे‑कास्टिंग विज़ुअलाइज़ेशन
Ray Ruby लाइब्रेरी शक्तिशाली 3D गणित और रे-कास्टिंग क्षमताओं को रूबी डेवलपर्स तक एक सुंदर पैकेज में लाती है। रे-कास्टिंग 2D या 3D स्थान में किरणों और वस्तुओं के बीच प्रतिच्छेदन का पता लगाने के लिए आवश्यक है। Ray लाइब्रेरी किरणें कास्ट करने और टकराव डेटा प्राप्त करने का सीधा तरीका प्रदान करती है। यहाँ एक बहुत उपयोगी उदाहरण है जो रूबी लाइब्रेरी का उपयोग करके बुनियादी रे-कास्टिंग विज़ुअलाइज़ेशन कैसे किया जाए, दर्शाता है।
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 लाइब्रेरी के माध्यम से रे रिफ्लेक्शन कैसे गणना करें??
# 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 रे लाइब्रेरी ने रूबी एप्लिकेशनों के भीतर 2D और 3D तत्वों की संरेखण के लिए पूर्ण समर्थन प्रदान किया है। यह तत्वों को संरेखित और स्थित करने के लिए सरल विधियाँ प्रदान करती है: align, padding, और margin विधियाँ डेवलपर्स को लेआउट पर नियंत्रण देती हैं, जो CSS बॉक्स मॉडल के समान हैं। निम्नलिखित सरल उदाहरण दिखाता है कि रूबी कमांड्स का उपयोग करके कैनवास के दोनों सिरों पर कई पंक्तियों को कैसे संरेखित किया जाए।
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 बॉर्डर के साथ बॉक्स ड्रॉइंग
रे 3D लाइब्रेरी सॉफ़्टवेयर डेवलपर्स के लिए रूबी एप्लिकेशनों के भीतर यूनिकोड ड्राइंग के साथ बॉक्स बनाने को आसान बनाती है। बॉक्स आपके टर्मिनल आउटपुट को अधिक संरचित बनाते हैं। रे यूनिकोड बॉक्स-ड्राइंग अक्षरों का उपयोग करके सुंदर बॉर्डर बनाता है। बॉक्स मेथड आपके कंटेंट को एक साफ़ बॉर्डर में लपेटता है, जैसे कि नीचे दिए गए कोड उदाहरण में दिखाए गए अक्षर ┌ ─ ┐ और └ ┘ का उपयोग करके।
Ruby लाइब्रेरी का उपयोग करके बॉर्डर के साथ एक साफ़ बॉक्स में सामग्री को कैसे रैप करें?
Ray.draw(width: 50, height: 8) do
box do
text "Welcome to Ray UI!" do
align :center
end
end
end