محاكاة النظام الشمسي


التطبيق مكتوب بلغة الدلفي النسخة  XE8
في هذا الجزء - نقوم بوضع العناصر الأساسية لتمثيل الفضاء ومحاكاة حركة الشمس حول نفسها.

1- محاكاة الفضاء: 

- نبدأ تطبيق جديد من نوع دلفي متعدد الأجهزة ثم نختار إطار ثلاثي لأبعاد (3D)
- نضيف للإطار عنصر TPlane ثم نعدل الأبعاد حتى نحصل على المظهر المناسب.
- نقوم بإضافة عنصر  TTextureMaterialSource ونختار الصورة النقطية التي تمثل الفضاء.
- نربط العنصر TPlane بالعنصر TTextureMaterialSource باستعمال الخاصية MaterialSource للعنصر TPlane
وبذلك نكون قد حاكينا الفضاء التي توجد به المجموعة الشمسية.

2- تمثيل الشمس وحركتها حول نفسها:

- نضيف عنصر TSphere  نسميةSphere_soleil  ونعدل الأبعاد ونجعلها مثلا (4×4×4) 
- نعدل الموقع وزاوية الدوران حتى نحصل على الأوضاع المناسبة.
- نضيف عنصر TLightMaterialSource  ونختار الصورة النقطية التي تمثل الشمس،  يمكن الحصول على هذه الصور باستعمال  محرك البحث غوغل.
- نربط بين العنصرين TSphere  و TLightMaterialSource  باستعمال الخاصية MaterialSource للعنصرTSphere
الفيديو التالي يمثل مراحل إنشاء هذا الجزء من التطبيق.

3- تمثيل بعض كواكب المجموعة الشمسية :

- نتبع نفس الخطوات المتبعة في محكاة الشمس .
- نضيف الكود التالي إلى الحدث OnRender  للعنصر Sphere_soleil : 
procedure TForm1.Sphere_soleilRender(Sender: TObject; Context: TContext3D); 
begin 
 Sphere1.Position.X := a1 * cos(t1); 
// مدار الكوكب 
Sphere1.Position.Y := b1 * sin(t1); 
 caption:=format('%f:%f:%f',[Sphere1.Position.X,Sphere1.Position.Y,Sphere1.Position.z]); t1:=t1+0.01 
end;
الفيديو التالي يوضح الخطوات المتبعة لمحاكاة الكواكب.
يمكن إضافة كواكب أخرى وذلك بإدراج عناصر من نوع TSphere  ، ثم نغير في قيم a و b في الحدث OnRender  للعنصر Sphere_soleil.كما هو موضح في المثال التالي: 
procedure TForm1.Sphere_soleilRender(Sender: TObject; Context: TContext3D); 
begin 
 Sphere1.Position.X := a1 * cos(t1); 
// 1مدار الكوكب 
Sphere1.Position.Y := b1 * sin(t1); 
Sphere2.Position.X := a2 * cos(t1); 
// 2مدار الكوكب 

Sphere2.Position.Y := b2 * sin(t1);
......
 t1:=t1+0.01 
end;

المشاركات الشائعة