بتـــــاريخ : 2/26/2011 8:29:44 PM
الفــــــــئة
  • الحـــــــــــاسب
  • التعليقات المشاهدات التقييمات
    0 4044 0


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

    الناقل : elmasry | العمر :42 | الكاتب الأصلى : 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كيلو )

    كلمات مفتاحية  :

    تعليقات الزوار ()