PDA

View Full Version : رسم عقربه های ساعت



mohammad amin
شنبه 18 آذر 1391, 19:38 عصر
سلام
می شه یه توضیحی بدید که چطور عقربه های ساعت رو با دستور های sin , cos بکشم؟ (الگوریتم)

مصطفی ساتکی
شنبه 18 آذر 1391, 20:21 عصر
عقربه ها که خط هستند ابتدای آنها مرکز صفحه ساعت و انتهای خط هم با داشتن شعاع و زاویه خط به صورت زیر بدست میاد.
x= center.x+ r * cos(theta*pi/180);
y= center.y+ r * sin(theta*pi/180);

در کد theta همان زاویه هستش از 0 تا 359.
r هم شعاع صفحه ساعت هستش.
center هم نقطه مرکز ساعت شما که می تونید هر جای صفحه قرارش بدین.
حال شما 60 تا نقطه روی دایره نیاز دارید 360/60=6
پس با offset=6 شما نقاط خودتونو رسم کنید حال به طور مثال قصد دارید که عقربه ثانیه رو رسم کنید مثلا روی ثانیه 20 باشید 20*6 =120 یک خط در زاویه 120 درجه با شعاع صفحه ساعت رسم کنید

mohammad amin
چهارشنبه 22 آذر 1391, 18:51 عصر
می شه بیشتر توضیح بدید!

Ananas
چهارشنبه 22 آذر 1391, 22:52 عصر
همونطور که می دونید تابع کسینوس مختصه ی افقی رو روی یک دایره بر حسب زاویه ی دلخواه بهمون میده و مختصه ی عمودی هم با تابع کسینوس بدست میاد. یعنی مکان هندسی نقاط (با مختصه ی x و y) روی دایره ای به شعاع یک، رو میشه کسینوس و سینوس بدست آورد. حالا فرض کن ساعت شما با شعاع 20 قراره رسم بشه، باید کسینوس و سینوس رو در 20 ضرب کنید تا بزرگنمایی بشه.
برای offset هم توضیح اینکه اگه تمام مختصات های بدست اومده روی دایره رو با یک x و y ثابت جمع کنیم در واقع کل تصویر ساعت رو جابجا کردیم به اون نقطه (مرکز ساعت رو بردیم به اون نقطه).
در مورد شاخصه های ساعت یا دقیقه که دور تا دور ساعت چیده شدن هم باید 0 تا 2 پی (3.14159 * 2) رو تقسیم بر تعداد شاخص ها کنید ، فاصله ی زاویه ای هر شاخص بدست میاد و در یک حلقه می تونید اینطور بنویسید :

min_count = 12 * 10;
for (i = 0; i < min_count; i++)
{
angle = (2 * pi) * i / min_count;
// cos(angle)
// sin(angle)
};