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

ما الخطأ في هذه الجملة

بدأه sunn في 28 أغسطس 2011 · 8 رد · 530 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

انا رسمت درائرتين (Ellipse2D) الاولى رقم 0 احداثيها السيني X = 150 واحداثيها الصادي Y=10

والكرة الثانية رقم 1 احداثيها السيني X=220 واحداثيها الصادي Y= 10

فلماذا هذه الجملة لا ترجع true ????????????????

System.out.println("0ix "+balls.get(0).contains(((balls.get(1).getX())-67.0),(balls.get(1).getY())));

يعني دائرتين متجاورتين المسافة بينهم 70

balls هو اسم ال arraylist اللي خزنت فيها الدائرتين

تم تعديل هذه المشاركة بواسطة sunn في 28 أغسطس 2011 في 22:31

#2
اقتباس

public boolean contains(double x, double y)

true if the specified coordinates are inside the Shape boundary; false otherwise.

ترجع false بسبب أن نقاط الشكل الثاني لديك (بعد عملية طرح الx) لا يكون داخل الشكل الأول، عليك بزيادة ال y في الشكل الثاني قليلاً حيث أنها لا تعتبر داخله في الشكل الأول اذا كانت أصغر من أو تساوي y في الشكل الأول..

مثلاً :

يمكنك القول b.getY() + 15 ..

وتذكر الEllipse يتم رسمه داخل شكل مستطيل غير ظاهر،، ويمكنك رسمها يدوياً للتأكد.

بالتوفيق،

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#3

كل عام وانتم بخير وانتم الى الله اقرب

شكرا لك لكنه ما نفع بضل يعطي false مهما غيرت بالاحداثيات

على كل حال دورت على طريقة تانية للحصول على نفس النتيجة وخلص

لكن الميثود contain يرجع true اذا كانت النقطة داخل الدائرة فقط ام اذا النقطة داخل المستطيل الوهمي (يعني ممكن تكون داخل المستطيل وليست داخل الدائرة كما في زوايا المستطيل)؟؟؟؟

#4

ممكن توضيح هل هذه الاحداثيات هي احداثيات بداية الدائرة؟

اذا كان كذلك كم هو قطر كل دائرة؟

مثل اذا كانت الدائرة قطرها صفر اذا لا تتقاطع الدائرتان

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#5

نعم هي احداثيات بداية الدائرة والتي اعطيها للبناء عند انشاء الدائرة وعرض الدائرة ( قطرها )=50 والمسافة بين الدائرتين (اقصد المسافة بين نقطة البداية للدائرتين) تساوي 70

#6

السبب هو ان الدالة getx() و getY() ترجعان الزاويه العلويه للمستطيل الذي يرسم بداخله الشكل

بينما الدالة contains تفحص اذا ماكانت النقطه داخل الشكل

في الكود الذي كتبتيه النقطه تقع داخل المستطيل وليس داخل الشكل الدائري

تم تعديل هذه المشاركة بواسطة mental-driller في 30 أغسطس 2011 في 20:44

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#7

نعم هي احداثيات بداية الدائرة والتي اعطيها للبناء عند انشاء الدائرة وعرض الدائرة ( قطرها )=50 والمسافة بين الدائرتين (اقصد المسافة بين نقطة البداية للدائرتين) تساوي 70

#8

حاول

System.out.println("0ix "+balls.get(0).contains(((balls.get(1).getX())-67.0),(balls.get(1).getY()-10)));
#9

انا جربت كل شي وخلص مشكورين حليت المشكلة بطريقة اخرى

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