الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

رسم دالة ال Sin بالطريقة العادية وبالتماثل باستخدام الجافا

بدأه Dev:MOH-TAHA في 18 ديسمبر 2009 · 0 رد · 6,785 مشاهدة · في قسم برمجة الألعاب و الرسوميات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1

بسم الله الرحمن الرحيم ،،

كما قمت في موضوع سابق بشرح طريقة رسم دائرة بالطريقة العادية وبالتماثل باستخدام الجافا

سأشرح اليوم باذن الله كيفية رسم دالة ال Sin ( الجيب) بالطريقة العادية وبطريقة التماثل ،،

أولا الطريقة العادية

لنتأمل الرسمة التالية

4194826230_cb8669feb7_o.jpg

اطار ابعاده 500X500

والاحداثيين السيني(x) والصادي (y)

ونقاط تقاطعهما وما الى ذلك من نقاط تقاطعهما مع الاطار الخارجي

،،

الآن بالطبع الجميع يعرف ان هذا هو شكل دالة ال Sin

وهي تكون على شكل موجة وهذه دورة واحدة تبدأ من ال 0 الى 360 درجة بالنظام الستيني

لو أن لدينا نقطة (x,y) كالنقطة المبينة في الرسم

سنجد أن

x=xc+x

و

y=yc-y

وهنا ناقص لأن محور الy الموجب في الحاسوب هو عكس محور ال y الموجب على الصبّورة ،،

ونجد أن y تساوي

y=Sin x

الآن لنرى كيف ستتم عملية الرسم باستخدام الجافا ،،

سأضع دالة ال paint

والملف سيكون في المرفقات ،،


public void paint(Graphics g){
super.paint(g);
g.drawLine(xc,0,xc,499);
g.drawLine(0,yc,499,yc);
for(int x=0;x<=360;x++){
g.drawLine(xc+x,yc-y,xc+x,yc-y);
}
}
@Override

الملف المرفق قمت فيه باستخدام ال Timer وقمت برسم ال Sin و Inverse Sin

ستتمتعون بمشاهدته وسيوضح بعض الامور ،،، وان وجد أي استفسار فانا حاضر باذن الله

الطريقة الثانية

الرسم بالتماثل ،،

لنشاهد الصورة التالية

4194826234_bc12bc5506_o.jpg

الآن كما نرى في الرسم

قمنا بعمل انعكاسات للنقاط بحيث قسمنا الدالة الى 4 اجزاء

من 0-90

ومن 90-180

ومن 180-270

ومن 270-360

أعتقد ان الرسم لا يحتاج الى شرح فهو يشرح نفسه بنفسه ،،

ولكن فليكن ،،

النقطة الاولى

(XC+X,YC-Y)

لو قمنا بعمل انعكاس لها حول المحور

X=90

سنجد ان احداثياتها تصبح

(XC+180-X,YC-C)

وباقي النقاط بهذه الطريقة

،، لنتجه الى الكود ،،


public void paint(Graphics g){
super.paint(g);
g.drawLine(xc,0,xc,499);
g.drawLine(0,yc,499,yc);
for(int x=0;x<=90;x++){
y=(int)(90*Math.sin(x*Math.PI/180));
g.drawLine(xc+x, yc-y, xc+x, yc-y);
g.setColor(Color.CYAN);
g.drawLine(xc+180-x, yc-y, xc+180-x, yc-y);
g.setColor(Color.DARK_GRAY);
g.drawLine(xc+x+180, yc+y, xc+180+x, yc+y);
g.setColor(Color.YELLOW);
g.drawLine(xc+360-x, yc+y, xc+360-x, yc+y);
}
}
@Override

قد قمت أيضا برسمها هي ومعكوسها واستخدام Timer والوان ليتم توضيح كيفية الرسم

واي استفسار انا في الجوار

دعواتكم اخواني

Sin.rar

2

Linux for human beings

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…