مكتبة روبي لإنشاء وعرض رسومات 3D وتطوير الألعاب

مكتبة روبي 3D مفتوحة المصدر لإنشاء وعرض رسومات ومشاهد 3D في تطوير الألعاب، المحاكاة، والروبوتات عبر واجهة برمجة تطبيقات روبي مجانية.

ما هي مكتبة Ray؟

إذا كنت مطور Ruby وتحب DSLs الأنيقة ولديك شغف بالرسومات القائمة على الطرفية، فإن مكتبة Ray هي جوهرة مفتوحة المصدر تستحق الاطلاع. تم إنشاؤها بواسطة Mon-Ouie، وتقدم Ray لغة مخصصة (DSL) لبناء رسومات ASCII و ANSI جميلة مباشرة في الطرفية الخاصة بك. على عكس مكتبات الرسومات الضخمة، تركز Ray على البساطة والتعبير، مما يسمح لك بتعريف المرئيات بأقل قدر من الشيفرة. تدعم المكتبة عمليات الشعاع ثنائية وثلاثية الأبعاد، مما يجعلها متعددة الاستخدامات لتطبيقات مختلفة. دعنا نستكشف بعض الميزات المحددة التي تقدمها المكتبة. تدعم إعداد اللعبة/النافذة المبسط (DSL)، إنشاء وإدارة المشاهد، رسم الأشكال الثنائية الأبعاد الشائعة والنص، إنشاء أشكال هندسية أساسية، إنشاء رياضيات المتجهات، دعم مصفوفات التحويل المخصصة، دعم التصيير خارج الشاشة، وغيرها.

Ray هو DSL بلغة Ruby لرسم رسومات الطرفية، يتيح لك تعريف الأشكال والألوان والتدرجات والتخطيطات باستخدام بنية إعلانية. الفكرة الأساسية هي اعتبار الطرفية كقماش وبناء عناصر رسومية منظمة يمكن تركيبها مثل عناصر واجهة المستخدم. فكر فيه كـ HTML و CSS لطرفيتك. يستفيد من رموز الهروب ANSI وحروف Unicode لتصوير مرئيات معقدة. يمكن لـ Ray عرض الرسومات باستخدام حروف Unicode ورموز رسم الصناديق، وهي أساسية لإنشاء تخطيطات حادة ونظيفة في بيئات الطرفية. Ray مكتبة Ruby صغيرة ممتعة تلتقط روح البساطة والتعبيرية. بينما قد لا تحل محل أطر TUI (واجهة المستخدم الطرفية) المتكاملة مثل curses أو tty، فإنها تتفوق في نمذجة التخطيطات السريعة، وتنسيق المخرجات الجميل، وتوفير طريقة ممتعة ومألوفة لـ Ruby لبناء مرئيات الطرفية.

Previous Next

البدء مع Ray

أسهل طريقة لتثبيت الإصدار المستقر من Ray هي باستخدام RubyGem. يرجى استخدام الأمر التالي لتثبيت سلس.

تثبيت Ray عبر RubyGem

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

يمكنك تنزيل المكتبة المشتركة المجمعة من مستودع Github.

تصور أساسي لتقنية Raycasting باستخدام مكتبة Ruby

توفر مكتبة Ray Ruby رياضيات ثلاثية الأبعاد قوية وإمكانيات تتبع الأشعة لمطوري Ruby في حزمة أنيقة. تتبع الأشعة أساسي لاكتشاف التقاطعات بين الأشعة والكائنات في مساحة ثنائية أو ثلاثية الأبعاد. توفر مكتبة Ray طريقة بسيطة لإطلاق الأشعة واسترجاع بيانات التصادم. إليك مثال مفيد جدًا يوضح كيفية تنفيذ تصور أساسي لتتبع الأشعة باستخدام مكتبة 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 ثلاثية الأبعاد.

كيف تحسب انعكاس الشعاع عبر مكتبة 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}"

المحاذاة والتموضع

توفر مكتبة Ray ثلاثية الأبعاد مفتوحة المصدر دعمًا كاملاً لتنسيق العناصر ثنائية وثلاثية الأبعاد داخل تطبيقات Ruby. تقدم طرقًا بسيطة لمحاذاة وتحديد موضع العناصر: طرق align و padding و margin تمنح المطورين التحكم في التخطيط، مشابهة لنماذج الصناديق في CSS. يوضح المثال البسيط التالي كيفية الحصول على عدة أسطر، محاذية إلى كلا طرفي اللوحة باستخدام أوامر Ruby.

كيف تحصل على خطوط متعددة، محاذية إلى الطرفين من القماش عبر API الخاص بـ Ruby؟

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

  text "Right aligned" do
    align :right
  end
end

رسم الصناديق بحدود Unicode

تسهل مكتبة Ray ثلاثية الأبعاد على مطوري البرمجيات رسم الصناديق باستخدام رسومات 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
 عربي