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


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

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

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

    السلام عليكم ورحمة الله وبركاته ،،

    اليوم ساقوم بشرح طريقة رسم دائرة بالطريقة العادية و باستخدام نظريات التماثل

    بالطبع سأقوم باستخدام لغة ال جافا

    ،،

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

    Posted Image

    لننظر الى الصورة ،، على فرض ان (xc,yc) هي مركز الدائرة
    ونصف قطرها يساوي r
    والاحداثيات الاخرى هي احداثيات ال x و الy
    ولنضع في اذهاننا ان احداثي الاكس الموجب في الحاسوب هو نفس احداثي الاكس الموجب على الصبورة ،، أما احداثي ال y فهو عكس احداثي ال y على الصبورة ،،

    الاحداثيات الاخرى صاحبة اللون الاسود هي نقاط تلاقي احداثيي ال x و y مع النافذة ذات الحجم 400X400

    على فرض ان لدي نقطة على محيط الدائرة وهي (x,y) فكيف سنستطيع معرفة قيم احداثيات هذه النقطة ؟

    لدينا قانون رياضي يقول
    x=r*Cos a
    y=r*Sin a

    حيث a هي الزاوية المبينة اعلاه وال r هي نصف قطر الدائرة

    اذن فقد انتهينا ووصلنا الى دور البرمجة ،،

    سأضع كود دالة ال paint وملف المصدر سيكون في المرفقات

    @Override
            public void paint(Graphics g){
            g.drawLine(0, yc, 499,yc);
            g.drawLine(xc, 0, xc,499);

            for(a=0;a<=360;a++){
            x=(int)(r*Math.cos(a*Math.PI/180));
            y=(int)(r*Math.sin(a*Math.PI/180));
            g.drawLine(xc+x, yc+y, xc+x, yc+y);

            }

            }



    الطريقة الثانية وهي رسمها بالتماثل
    ونستخدمها ونفضلها عن الطريقة الاولى لان عملية حساب ال sin و ال Cos مكلفة في الحاسوب فنحاول ان نقللها

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

    الآن لدينا نقطة (x,y)
    لو قمنا بعمل انعكاس لها على المحور y=x
    سنجد ان احداثياتها هي
    (y,x)
    ولو قمنا بعد ذلك بعمل انعكاس لها على محور ال y
    سنجد ان احداثياتها اصبحت
    (-y,x)

    ملاحظة:
    اضطررت لكتابتها في تاج كود لكي تكون الاشارة صحيحة ،،

    ولو تابعنا عمل انعكاسات كما هو موضح في الصورة سنحصل على الاحداثيات الموضحة في الصورة ،،

    الان ساضع دالة ال paint
            @Override
            public void paint(Graphics g){
            g.drawLine(0, yc, 499,yc);
            g.drawLine(xc, 0, xc,499);

            for(a=0;a<=45;a++){
            x=(int)(r*Math.cos(a*Math.PI/180));
            y=(int)(r*Math.sin(a*Math.PI/180));
            g.drawLine(xc+x, yc+y, xc+x, yc+y);
            g.drawLine(xc+y, yc+x, xc+y, yc+x);
            g.drawLine(xc+x, yc-y, xc+x, yc-y);
            g.drawLine(xc+y, yc-x, xc+y, yc-x);
            g.drawLine(xc-y, yc-x, xc-y, yc-x);
            g.drawLine(xc-x, yc-y, xc-x, yc-y);
            g.drawLine(xc-x, yc+y, xc-x, yc+y);
            g.drawLine(xc-y, yc+x, xc-y, yc+x);


            }

            }


    في هذه المرة قسمنا الدائرة كما لاحظتم الى 8 اقسام ،، بالطبع نستطيع ان نقسمها لأكثر من ذلك ونقوم باجراء الحسابات وبرمجتها

    اتمنى ان يكون الشرح سهلا وواضحا واي استفسار انا والاخوة موجودون

    دعواتكم لي ،،
     
    ملف مرفق(ملفات)
     
    ملف مرفق  cycle.rar (2.2كيلو )

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

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