أتعرف، الموضوع أعقد مما تصورت
هذا مشروع ويحتاج لتحليل ودراسة
على كل، من يرد المزيد من المعلومات فلقد وجدت هذا البحث
https://www.4shared.com/file/22985260...cbb8/____.html
كما وجدت مثالا بالسي شارب بعد إلقاء نظرة خفيفة وجدته يحتاج كوده للضبط، فلقد وضعه البعض على مدوناتهم لكنهم لا يعلمون أنه يحوي syntax errors. لكنني أدونه لكل مهتم بالفكرة:
على فكرة، لكل من يفهم الفي بي يمكنه تحميل برامج تحويل السي شارب إلى في بي
كود PHP:
using System;
using System.Collections.Generic;
using System.Text;
namespace MyClock
class CalcPrayerTimes
double Local_Noon;
double Asr_Time;
double Esha_Time;
double Fajr_Time;
double Sun_Set;
double Sun_Rise;
public CalcPrayerTimes(int Year, int Month, int Day,double Long,double Lat, double Zone)
double D = (367 * Year) - ((Year + (int)((Month + 9) / 12)) * 7 / 4) + (((int)(275 * Month / 9)) + Day - 730531.5);
double L = (280.461 + 0.9856474 * D)%360;
L = LessMore360(L);
double M = (357.528 + 0.9856003 * D)%360;
M = LessMore360(M);
double Lambda = L + 1.915 * Math.Sin(ToRadian(M)) + 0.02 * Math.Sin(ToRadian(2 * M));
Lambda = LessMore360(Lambda);
double Obliquity = 23.439 - 0.0000004 * D;
double Alpha = ToDegree(Math.Atan((Math.Cos(ToRadian(Obliquity)) * Math.Tan(ToRadian(Lambda)))));//////
Alpha = LessMore360(Alpha);
Alpha = Alpha - (360*(int)(Alpha /360));
Alpha = (Alpha + 90 * (Math.Floor(Lambda / 90) - Math.Floor(Alpha / 90)));
double ST = (100.46 + 0.985647352 * D)%360;
double Dec = ToDegree(Math.Asin(Math.Sin(ToRadian(Obliquity)) * Math.Sin(ToRadian(Lambda))));
double Durinal_Arc = ToDegree(Math.Acos((Math.Sin(ToRadian(-0.8333)) - Math.Sin(ToRadian(Dec)) * Math.Sin(ToRadian(Lat))) / (Math.Cos(ToRadian(Dec)) * Math.Cos(ToRadian(Lat)))));
double Noon = Alpha - ST;
Noon = LessMore360(Noon);
double UT_Noon = Noon - Long;
Local_Noon = UT_Noon /15 + Zone;
double Asr_Alt = ToDegree(Math.Atan(1 + Math.Tan(ToRadian(Lat - Dec))));
double Asr_Arc = ToDegree(Math.Acos((Math.Sin(ToRadian(90 - Asr_Alt)) - Math.Sin(ToRadian(Dec)) * Math.Sin(ToRadian(Lat))) / (Math.Cos(ToRadian(Dec)) * Math.Cos(ToRadian(Lat)))));
Asr_Arc = Asr_Arc / 15;
Asr_Time = Local_Noon + Asr_Arc;
Sun_Rise = Local_Noon - (Durinal_Arc / 15);
Sun_Set = Local_Noon + (Durinal_Arc /15);
double Esha_Arc = ToDegree(Math.Acos((Math.Sin(ToRadian(-18)) - Math.Sin(ToRadian(Dec)) * Math.Sin(ToRadian(Lat))) / (Math.Cos(ToRadian(Dec)) * Math.Cos(ToRadian(Lat)))));
Esha_Time = Local_Noon +( Esha_Arc /15);
double Fajr_Arc = ToDegree(Math.Acos((Math.Sin(ToRadian(-18)) - Math.Sin(ToRadian(Dec)) * Math.Sin(ToRadian(Lat))) / (Math.Cos(ToRadian(Dec)) * Math.Cos(ToRadian(Lat)))));
Fajr_Time = Local_Noon - (Fajr_Arc /15);
public double ToRadian(double Value)
return (Value * Math.PI / 180);
public double ToDegree(double Value)
return (Value * 180 / Math.PI );
public double LessMore360(double Value)
if (Value <= 0 || Value > 360)
{ return (Value + 360); }
else
return Value;
public int LocalNoonHour
get
return ((int)(Local_Noon));
public int LocalNoonMin
get
return (int)(((Local_Noon) - (int)Local_Noon) * 60);
public int AsrHour
get
return ((int)(Asr_Time));
public int AsrMin
get
return (int)(((Asr_Time) - (int)(Asr_Time)) * 60);
public int SunRiseHour
get
return ((int)(Sun_Rise));
public int SunRiseMinr
get
return (int)(((Sun_Rise) - (int)(Sun_Rise)) * 60);
public int SunSetHour
get
return ((int)(Sun_Set));
public int SunSetMin
get
return (int)(((Sun_Set) - (int)(Sun_Set)) * 60);
public int FajrHour
get
return ((int)(Fajr_Time));
public int FajrMin
get
return (int)(((Fajr_Time) - (int)(Fajr_Time)) * 60);
public int EshaHour
get
return ((int)(Esha_Time));
public int EshaMin
get
return (int)(((Esha_Time) - (int)(Esha_Time)) * 60);
لي عودة إن شاء الله للموضوع.
أنا الآن مشغول بارشا بارشا