السلام عليكم و رحمة الله و بركاته ,
ان شاء الله سنكتب اليوم دالة حساب مواقيت خمسة و هن : الظهر و الفجر و الشروق و المغرب و العشاء , و ان شاء الله ساضيف كود العصر فيما بعد .
هذه الدالة تأخذ ترتيب اليوم فى السنة و ذلك لانها تستدعى دالة الزمن بداخله EOT(DAY) .
و تحتاج هذه الدالة ايضا ثلاث بيانات عن المدينة و هى : خط الطول - دائرة العرض - الارتفاع عن سطح البحر , وهذه البيانات تجدها فى بحثك باسم المدينة حيث تجد ويكبيديا تظهر لك هذه البيانات .
ان شاء الله فى المشاركات القادمة ساشرح اجزاء الدالة .
كود:
void praying_calc(uint16_t days){
/* to calculate and return time of all praying, */
uint8_t hight;
float length_line_mid, length_line_real, length_line_diff, width_circle;
float* data;
float cita;
float equoftime;
float delta;
float duhur, shorok, ghroup, fagr, ishaa;
float numerator;
float denominator;
length_line_mid = 30;
hight = 23;
width_circle = 30;
length_line_real = 31.13;
length_line_diff = length_line_mid - length_line_real;
data = EOT(days); //calculate and return Equation of Time and delta
equoftime = data[0];
delta = data[1];
cita = 90.8309 + 0.0353 * sqrt(hight) ;
numerator = cos(cita * M_PI/180) - sin(width_circle*M_PI/180) * sin(delta*M_PI/180);
denominator = cos(30*M_PI/180) * cos(delta*M_PI/180);
duhur = 12.0 + length_line_diff / 15.0 - equoftime / 60.0; // الظهر
shorok = duhur - acos(numerator/denominator)*180/M_PI/15; // الشروق
ghroup = duhur + acos(numerator/denominator)*180/M_PI/15; // المغرب
numerator = cos((cita+18) * M_PI/180) - sin(width_circle*M_PI/180) * sin(delta*M_PI/180);
fagr = duhur - acos(numerator/denominator)*180/M_PI/15; // الفجر
ishaa = duhur + acos(numerator/denominator)*180/M_PI/15; // العشاء
}
و ما توفيقى الا بالله