اوك شكرا لك
اوك شكرا لك
جربت تشغيل الكود لم يعمل
جربت ايضًا استخراج المعادلة او المنطق من الكود ولم انجح
هذا الكود محسن استعملت فيه ال timer بدلا من ال multi threading
لا تنس اضافة ال timer يدويًاكود PHP:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
namespace WindowsFormsApplication2
{
public partial class playGround : Form
{
private readonly int radius =150 ;
private readonly double velociy =10 ;
private double omega;
private int ctime;
public playGround()
{
InitializeComponent();
omega = velociy / radius;
ctime = 0;
this.Size = new System.Drawing.Size(4 * radius, 3 * radius);
this.Paint += new PaintEventHandler(DrawEllipseRectangle);
}
private void Form1_Load(object sender, EventArgs e)
{
animate_object(100);
}
private void animate_object(int interval)
{
time.Interval = interval;
time.Start();
time.Enabled = true;
}
private void DrawEllipseRectangle(object sender, PaintEventArgs e)
{
// Create pen.
Pen blackPen = new Pen(Color.Black, 3);
// Create rectangle for ellipse.
Rectangle rect = new Rectangle(radius, 0, radius * 2, radius * 2);
// Draw ellipse to screen.
e.Graphics.DrawEllipse(blackPen, rect);
}
private void ttick(object sender, EventArgs e)
{
int x, y;
ctime++;
x = Convert.ToInt16(radius - radius * Math.Cos(omega * ctime)) + Convert.ToInt16(radius) ;
y = Convert.ToInt16(radius * Math.Sin(omega * ctime)) + Convert.ToInt16(radius);
A.Location = new Point(x,y);
}
}
}
بالنسبة للرسم الثلاثي الابعاد والذي هو موضوعنا هنا
انا لا احبذ مسألة تخمين المعادلة حتى الوصول إلى الشكل المناسب
هناك مكتبات مثل directX وغيرها متخصصة في الرسم ثلاثي الابعاد
وفيها دوال خاصة للتحويل من 3d->2d
ويمكن فيها تحديد جهة "الكاميرا" والاضواء
اقترح ان نبدأ بالبحث في هذا المجال
الحمد لله بدأت في هذا المجال من شهر ( XNA )
لكني مازلت تائها فيه
بالنسبة للكود الي كنت واضعه انا هذا كود vb.net
الكود الي حضرتك وضعته فيه مشكلة في بعض الفانكشنز
ياريت تشوف او ترفق الملف الخاص بالروجكت
وشكرا لك
ربما المشكلة انك لم تضع timer كما وضحت في الرسالة السابقة
الملف مرفق
بالنسبة لمجال تطوير الالعاب او الصور المتحركة في البرمجة هو موضوع كبير جدًا
ولكن هو ليس مجال اهتمامي في البرمجة
بسبب صعوبته وافتقاري للمعلومات الاساسية من جهة، ولأن الناتج صعب ان يتم الاستفادة
منه ماديًا من جهة اخرى(المشاريع عادة ما تكون كبيرة وصعبة)
فنصيحة لا تدخل هذا المجال إلا اذا كنت تجد نفسك فيه
التعديل الأخير تم بواسطة ahmad sadiq ; 12-05-2011 الساعة 02:17 AM
تحياتي للجميع
مسابقة جميلة جدا وشجعتني للدخول اليها
اما بالنسبة للحركة الدائرية فكما قال الاخ احمد صادق بخصوص المعادلات (اذكر اني اخذتها في مادة الرياضيات )
حيث يمككنا ان نقوم بالتحويل من ال Coordinate الى ال polar عن طريق المعادلة التالية
x = rcos(d)
y=rsin(d)
وفي نظام ال polar سيكون التقسيم كالتالي
(r,d) حيث ان r طول نصف القطر و d تمثل الزاوية والدائرة تشمل الزوايا من 0 - 360
في هذه الحالة نقوم بتثبيت r وتغيير الزاوية لنصل الى الشكل المطلوب
فسنقوم باجراء loop على الزاوية من 0 - 360 وفي كل مرة سنقوم بتحويل الزاوية الى ال coordinate system وبعد ذلك نقوم بتحديد النقطة x,y ووضع الصورة عندها
x = rsin(d)
d= 1
x = rsin(1)
r : ثابت ولنفرض انه 4
x = 4sin(1)
وكذلك الامر مع y
ومن ثم نتوصل الى x و y ونضعهم على الرسم البياني ليصبح لدينا دائرة
وهذه تجربتي في الكود
تسخدمت pic.X على افتراض ان الفورم قد جهز ليستقبل الاحداثيات على هيئة المستوى البيانيكود PHP:
For (int i = 0;i<=360;i++)
{
double x = 4 * Cos(i);
double y = 4 * Sin(i);
pic.X = x;
pic.Y = y;
}
وانتظر تعليقاتكم
برضه تنفع
ما رأيك تقترح فكرة مسابقة جديدة
اوكي
الفكرة التي املكها هي انشاء Chart يقوم بجلب قيم من ملف اكسل (يحتوي على قيم x,y) ويقوم برسمها على الفورم على المستوى البياني.
عانيت من هاي المشكلة في احد مشاريعي قبل ظهور اداة مايكروسوفت للرسم البياني Microsoft Chart Wizard ..... بس الان الوضع تغير
عشان هيك بتقدرو تستخدموها في حل السؤال ...
التعديل الأخير تم بواسطة محـ جمال مـد ; 08-12-2010 الساعة 03:42 AM