بسم الله الرحمن الرحيم ،، كما قمت في موضوع سابق بشرح طريقة رسم دائرة بالطريقة العادية وبالتماثل باستخدام الجافا سأشرح اليوم باذن الله كيفية رسم دالة ال Sin ( الجيب) بالطريقة العادية وبطريقة التماثل ،، أولا الطريقة العادية لنتأمل الرسمة التالية اطار ابعاده 500X500 والاحداثيين السيني(x) والصادي (y) ونقاط تقاطعهما وما الى ذلك من نقاط تقاطعهما مع الاطار الخارجي ،، الآن بالطبع الجميع يعرف ان هذا هو شكل دالة ال Sin وهي تكون على شكل موجة وهذه دورة واحدة تبدأ من ال 0 الى 360 درجة بالنظام الستيني لو أن لدينا نقطة (x,y) كالنقطة المبينة في الرسم سنجد أن x=xc+x و y=yc-y وهنا ناقص لأن محور الy الموجب في الحاسوب هو عكس محور ال y الموجب على الصبّورة ،، ونجد أن y تساوي y=Sin x الآن لنرى كيف ستتم عملية الرسم باستخدام الجافا ،، سأضع دالة ال paint والملف سيكون في المرفقات ،، plain text @Overridepublic 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 ستتمتعون بمشاهدته وسيوضح بعض الامور ،،، وان وجد أي استفسار فانا حاضر باذن الله الطريقة الثانية الرسم بالتماثل ،، لنشاهد الصورة التالية الآن كما نرى في الرسم قمنا بعمل انعكاسات للنقاط بحيث قسمنا الدالة الى 4 اجزاء من 0-90 ومن 90-180 ومن 180-270 ومن 270-360 أعتقد ان الرسم لا يحتاج الى شرح فهو يشرح نفسه بنفسه ،، ولكن فليكن ،، النقطة الاولى (XC+X,YC-Y) لو قمنا بعمل انعكاس لها حول المحور X=90 سنجد ان احداثياتها تصبح (XC+180-X,YC-C) وباقي النقاط بهذه الطريقة ،، لنتجه الى الكود ،، plain text @Overridepublic 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 والوان ليتم توضيح كيفية الرسم واي استفسار انا في الجوار دعواتكم اخواني
@Overridepublic 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);}}
@Overridepublic 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);}}