وبلاگ سید جلال سیدیزدی

تمرین پانزدهم

چهارشنبه, ۳ ارديبهشت ۱۳۹۳، ۱۰:۰۱ ب.ظ

سلام دوستان

در این تمرین باید در کلاس DrawDemo در پروژه ی scribble از فصل پنجم، دو متد را اضافه کنید:

  1. متدی که شکل زیر را رسم کند.

2. متدی که نمودار y = x ^ 3 را رسم کند:



مهلت ارسال: یکشنبه 7 اردیبهشت 93 ساعت 9

با تاخیر: یکشنبه 7 اردیبهشت 93 ساعت 20


موفق باشید.

  • ۹۳/۰۲/۰۳

نظرات  (۳)

سلام استاد
امکانش هست برای حلقه زیر بجای اینک ++i 
0.5=+i   بشه تا مقیاسمون درست شه؟
اگ میشه تغییری ک باید روی نوع متغیر بدیم چجوریه؟؟
ممنون
for(int i = -30 ; i <= 30 ; i++){
                pen.moveTo(250+i,200-(i*i*i));
        }
پاسخ:

سلام
فرض کنید i  را برای طول و j را برای عرض مختصات روی صفحه نمایش به کار ببریم و x , y را برای عرض و طول تابع.
از آنجا که مهم برای ما تابع است (که مثلاً از کجا تا کجا رسم شود) بهتر است x رو به ازای مقادیر مورد نظر تغییر داده و y را به دست آوریم. سپس از روی این مقادیر i , j را به دست آوریم.
پس اینطوری بنویسید:

for(double x = -3; x <= 3; x += 0.1){
y = رابطه تابع
i = (int) (رابطه مناسب)
j = (int) (رابطه مناسب)
}

نکته:

همانطور که میدونید (int) عمل تبدیل نوع (type casting) رو انجام می دهد. "رابطه مناسب" از نوع دابل است و برای اینکه داخل متغیری از نوع int قرار بگیرد باید تبدیل به int شود.

موفق باشید.

سلام، استاد
تمرین نمودار y = x ^ 3 خیلی سخته، خواهشا مهلتش رو بیشتر کنید، یا اگه میشه مقیاسی که باید در x , y  ضرب بشه تا به صورت گرافیکی در بیاد رو بگید؟
پاسخ:
سلام
خیلی سخت نیست.
اینکه گفتید گرافیکی بشه درست نیست.
اینطوریه که دو دستگاه مختصات داریم که یکی مربوط به تابع است و دیگری مربوط به صفحه نمایش.
همچنین علاوه بر تفاوت در جهت محور عمودی و مبداء مختصات که قبلاً گفته شد، مقیاس محورها هم متفاوت است.

راه حل: فرض کنید می خواهیم محور طول ها از -a تا +a باشد، یعنی اندازه آن 2a است. از طرف دیگر فرض کنید عرض canvas برابر L است. پس برای نمایش مختصات خاصی از تابع بر روی صفحه نمایش باید x و y هر کدام در ضریب خاصی که به 2a و L ربط دارد ضرب شود که همان مقیاس است و با یک تناسب ساده به دست می آید.
حال همانطور که در جواب به محمد گفته شده، x را مثلاً از -a تا +a تغییر دهید و y را طبق رابطه ی تابع محاسبه کنید. سپس  i , j را به دست آورید.
موفق باشید.
سلام استاد خسته نباشین
 استاد من اصلا متوجه نمیشم که این پروژه چطور کار میکنه
برای این که یه شکل بکشه باید کدوم متد از کدوم کلاس رو فرا بخونم؟
طرز ران کردنش رو بلد نیستم
اگه میشه لطف کنین یه توضیحی بدین ممنون میشم
مرسی
پاسخ:
سلام ممنون
شما ابتدا متدهای رسم مستطیل و غیره رو در کلاس DrawDemo بررسی کنید تا به چگونگی استفاده از کلاس های Pen و Canvas آشنا شوید.
همچنین داکیومنت این دو کلاس رو خوب مطالعه کنید.
سپس بر روی الگوریتم رسم شکل spiral تمرکز کنید. (که کار مشکی نیست)

در مورد رسم نمودار ابتدا محورهای مختصات رو رسم کنید. سپس طبق رابطه تابع باید به ازای هر مقدار x (که مثلاً از -3 تا +3 تغییر می کند) مقدار y را به دست آورد و از مکان فعلی تا آنجا خط رسم کرد.
به نکات زیر توجه کنید:
  • از آنجا که مختصات تابع را مثلاً از -3 تا +3 گرفتم و با توجه به اینکه مختصات گرافیکی صفحه بر حسب پیکسل (نقاط صفحه نمایش) است باید یک ضریب مقیاس در نظر گرفت که با ضرب x و y در آن، مختصات نقاط روی تابع به مختصات گرافیکی تبدیل شود.
  • توجه کنید که جهت محور عرض در صفحه نمایش (گرافیک) به سمت پایین بوده و مرکز مختصات نیز در گوشه بالا سمت چپ می باشد در حالی که جهت محور y ها برای تابع به سمت بالاست و مبدا مختصات در وسط است. از این رو در اینجا باید از روابط "تغییر مبدا مختصات و جهت محورها" که در دبیرستان داشتید استفاده کنید.
  • برای انجام این تمرین علاوه بر موارد بالا باید کمی سعی خطا هم داشت. یعنی برنامه رو اجرا کنید اگر نتیجه ی مورد نظر را نگرفتید دوباره فکر کنید و تغییر دهید.

موفق باشید.

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی