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

الناقل : elmasry | الكاتب الأصلى : Dev:MOH-TAHA | المصدر : www.arabteam2000-forum.com

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

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

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

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

اطار ابعاده 500X500
والاحداثيين السيني(x) والصادي (y)

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

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

لو أن لدينا نقطة (x,y) كالنقطة المبينة في الرسم
سنجد أن
x=xc+x
و
y=yc-y
وهنا ناقص لأن محور الy الموجب في الحاسوب هو عكس محور ال y الموجب على الصبّورة ،،

ونجد أن y تساوي
y=Sin x

الآن لنرى كيف ستتم عملية الرسم باستخدام الجافا ،،
سأضع دالة ال paint
والملف سيكون في المرفقات ،،

@Override
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);
}
}


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

الطريقة الثانية
الرسم بالتماثل ،،
لنشاهد الصورة التالية
Posted Image

الآن كما نرى في الرسم
قمنا بعمل انعكاسات للنقاط بحيث قسمنا الدالة الى 4 اجزاء
من 0-90
ومن 90-180
ومن 180-270
ومن 270-360

أعتقد ان الرسم لا يحتاج الى شرح فهو يشرح نفسه بنفسه ،،
ولكن فليكن ،،
النقطة الاولى
(XC+X,YC-Y)
لو قمنا بعمل انعكاس لها حول المحور
X=90
سنجد ان احداثياتها تصبح
(XC+180-X,YC-C)
وباقي النقاط بهذه الطريقة
،، لنتجه الى الكود ،،
@Override
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);
}
}


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

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

دعواتكم اخواني
 
ملف مرفق(ملفات)
 
ملف مرفق  Sin.rar (2.72كيلو )