Jump to content
Mohamad Magdy

حساب مواقيت الصلاة الشرعية

Recommended Posts

شكرا يا اخ سالم.... بارك الله فيك...

 

انا رجل طبيب ولا افهم في الرياضيات كثيرا و قد وفرت علي بشرحك ربما ساعات طويلة لاحل المسالة بنفسي..

 

جزاك الله عني الف خير

 

د. نبراس الحائري

Share this post


Link to post
Share on other sites

موضوع جديد ومهم للغاية

وهذا ما كنت أبحث عنه

 

أولاً أشكر كل من ساهم وشرح حول هذا الموضوع

وإني لأرجو ممن يكتب البرنامج أن يضعه بالتفصيل كما هو ليتسنى لنا الإفادة المرجوة في البرمجة

 

فأنا من مبرمجي PIC بلغة ++C ولغة الأسمبلي وأحب أن أشارككم في الموضوع

لكي نبني ساعة منزلية تعطينا أوقات الصلاة

ولقد سبقني إليها بعض الأخوة ولكنا مقتصرة عندنا ( في سورية ) في المساجد

ولا أعلم هل هي دقيقة للغاية أم لا

 

على كل سأحاول أن أبرمج ساعة تكون في منتهى الدقة ونستطيع جميعنا إقتنائها

وذلك بسبب رخص سعر PIC

ومساعدتكم الكريمة

Share this post


Link to post
Share on other sites

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

جزاكم الله خيرا علي الموضوع الشيق و نفع الله بكم الاسلام و المسلمين .الان انا عملت برنامج بلغت السي شارب فيه اوقات الصلاه معتمدا علي المعادلات و ملف الاكسل لكن عندما قمت بحساب وقت الصلاه لتاريخ اليوم 24/اكتوبر /2006 او حتي شهر نوفمبر لنفس العام (2006)كانت النتائج لاوقات الصلاه غير صحيح بالمره حتي في ملف الاكسل نفسه ohmy.gifsad.gif

فارجوا التاكد من حضراتكم ان كان هذا الكلام صحيح لتعم الفائده و جزاكم الله خيرا

Share this post


Link to post
Share on other sites

اخواني الاعزاء بارك الله فيكم

 

انا اخوكم المبرمج عبدالكريم (أبو طحمرة في ثاني رد)

 

الله يبارك فيكم واصبح الموضوع واضحا بعد النقاشات خلال السنتين الا قليلrolleyes.gif

 

اخواني لدي سؤل :

اعتبار التوقيت الصيفي

ما التغير الذي يحصل عند اعتبار التوقيت صيفي؟

هل تزاد فرق التوقيت +1 ام ماذا بارك الله فيكم

Share this post


Link to post
Share on other sites

أخي أبو طحمرة

في التوقيت الصيفي يزيد فارق التوقيت بساعة

مثلا فارق التوقيت في مصر في الشتاء ساعتان و في الصيف ثلاث ساعات

و تستطيع تطبق ذلك في معادلات الصلاة

 

LocalNoon := (UTNoon/15) + GMT

Share this post


Link to post
Share on other sites

الأخHindawy أنا أيضا أحاول ما تحاوله أنت لكن بلغة الأسمبلي فقط غير أنى لست أدري كيف يستطيع الميكروكنترولر أن يحسب الدوال المثلثية مع العلم أنها ليست من الدوال الذى يستطيع حلها وأرجو منك أو من أي من يعرف من الأخوة الأفاضل أن يجيب علي مثل هذا التساؤل لأن أخر ما توصلت أليه هو أن أحلها بالتحليل العدديpower sieresلكن هناك العديد من المشاكل وأرجو لو أحد يعرف في الأسمبلي و المايكروكنترولر فأعرف منه حلول لهذه المشاكل التي الدوال المثلثية منها وجزاكم الله خيرا وجزا الأخ سالم والأخ محمد مجدي وكل من شارك في هذا الموضوع خير الجزاء[/color]

Share this post


Link to post
Share on other sites

شكرا لك اخي الا صلاتي

 

 

سؤال اخر

 

في بعض البرامج تطلب منك تحديد نصف الكرة هل هو شمالي ام جنوبي

ما الفائدة من ذلك ومالتغير الذي يحصل في كلتا الحالتين

 

الثالث

 

هل هناك معادلة خاصة بالامساك

 

وشكرا لكم

Share this post


Link to post
Share on other sites

سؤالي للأستاذ محمد مجدي هل المعادلات السابقة لحساب مواقيت الصلاة موثقة في كتب؟؟ واذا كان نعم ماهي هذه الكتب لأني احتاجها في مشروعي اذ لابد من أن يكون المرجع كتاب موثق..

ثاني طلب أريد -جزاك الله خيراً- خطوط الطول والعرض للمدن وشكراً

Share this post


Link to post
Share on other sites

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

 

في البداية اود شكركم جدا على هذا الموضوع الرائع واسأل الله ان يجعله في ميزان حسناتكم يوم القيامة انه على كل شيء قدير

 

لقد قمت بتطبيق البرنامج وقارنت النتائج لدي بملف ال Excel الذي يحتوي على المعادلات وجائت النتائج مطابقة تماما للملف

ولكن بالنظر الى التقويم الرسمي اجد انه يوجد فرق ما يقارب 9 دقائق لصلاة العشاء فقط حيث ان التوقيت الصحيح هو 6:52 ونتائجي هي 6:43

 

طريقة الحساب هي ام القرى ارجو منكم توضيح سبب المشكله ولكم جزيل الشكر

Share this post


Link to post
Share on other sites

شكرا اخواني الاعزاء

ارجوا لمن يستطيع ان يضع هنا كود بلغة فيجوال بيسك 6 لحساب مواقيت الصلاة

نكون له من الشاكرين

 

Share this post


Link to post
Share on other sites

اقتباس (سالم الجعيدي @ 4th Jun 2005, 06:51 AM)
صلاة العصر ‏

 

من خلال التأمل في قانون حساب الحصص ‏AR ‎‏ نجد أن الذي يحدد مقدار هذا الحصص هو ‏ارتفاع أو إنخفاض مركز الشمس عن الأفق ‏alt ‎‏ فبتغيير قيمته تتغير قيمة الحصة ‏

 

ولحساب وقت العصر يجب تحديد مقدار ارتفاع مركز الشمس ‏Asr alt‏ عن الأفق وفق القانون ‏

 

‎,‎‏(( ‏Asr Alt =90- ATAN (1+ TAN( Lat - Dec‎

حيث ان ‏Lat ‎‏ هو عرض البلد ‏

و ‏Dec‏ هو ميل الشمس ‏

وواضح من قانون حساب ارتفاع العصر أنه يعتمد على أخذ الفرق بين الميل وعرض البلد ‏

لذلك لا بد أن تكون قيمة هذا الفارق بالموجب ، وإلا وقع الخلل في حساب وقت العصر ‏

كما يشاهد ذلك في شهري يوليو وأغسطس للبلدان التي يقل عرضها عن الميل الكلي للشمس ‏

أوفي الشتاء للمدن التي تقع أسفل خط الأستواء ‏

لذلك عندما نحسب وقت العصر ببرنامج أكسل أو غيره فإننا نضيف دالة ‏ABS ‎‏ أي دالة القيمة ‏المطلقة التي تحول السالب في آخر القيم إلى موجب كالتالي ‏

‎,‎‏ ((( ‏Asr Alt =90- ATAN (1+ TAN(ABS( Lat - Dec‎

ثم بعد معرفتنا بإرتفاع العصر نطبق الحاصل في قانون الحصص كالآتي ‏

 

user posted image

 

ويصير معرفة العصر ‏Asr Time‏ وفق المعادلة ‏

Asr Time = Local Noon + AR / 15‎

ففي مثالنا لمدينة الدوحة عرضها 25.25 وميل الشمس 22.297 وبالتالي فإن حاصل طرح ‏الميل من العرض تعطي نتيجة موجبة ، لذلك نطبق قانون حساب ارتفاع العصر مباشرة دون ‏تغيير كالتالي ‏

Asr alt = 90 – Atan (1+ Tan ( Lat – Dec )),‎

Asr alt = 90 – Atan ( 1 + Tan (25.25 – 22.297),‎

Asr alt = 43.5596‎

‏ ‏

user posted image

AR = 50.94430‎

Asr Time = Local Noon + AR / 15 ‎

Asr Time = 11:31:41 + 50.94430 / 15‎

Asr Time = 11:31:41 + 3:23:46 ‎

Asr Time = 14:55:27

 

 

سالم الجعيدي ----------- سالم الجعيدي ------------- ----سالم الجعيدي

شكرا على هذا الموضوع الشيق

اني والله اعمل في برمجة المتحكمات

 

PIC && Atmel

ولقد نويت ان اعمل ساعة جدارية لمواقيت الصلاة ونضعها في جامع الحي عندنا على روح والدي الذي توفي في 12\2\2007

منذ ايام رحمه الله

انا اعيش في سوريا

لقد صادفت في بعض الجوامع القريبة وجود نفس الساعات لمواقيت الصلاة متوافقة مع الرزنامة المحلية لمدينة دمشق

ولايوجد حتى فارق في الثواني ولكن والله اعلم المشروع نفذ بدون اية قوانين رياضية

سوى عملية ارشفة مجردة ضمن المعالجات الذكية

واستعراض هذه البيانات على شاشات 7seg

وحين القيت بالصدفة بموقعكم هذا القيم والمفيد رعاكم الله وحماكم

واني والله ليس لدي خبيرة في المجالات الفلكية

انني والله اعمل مهندس برمجيات والكترونيات

c/ c++ microchip / atmel

ولقد ذهلت لما قد وجدت من معادلات رياضية يمكن ان نتعامل معها كمبيرمجين في اللغات

ذات المستوى العالي

وخلال تصفحي لموضوع الاستاذ سالم

هناك بعض الصور لم استطع اظهارها وهي التالية

 

http://www.arab3.com/upload/images/Jun05/jaidysalem_i3.jpg

 

http://www.arab3.com/upload/images/Jun05/jaidysalem_i2.gif

http://www.arab3.com/upload/images/Jun05/j...alem_hhhhhh.jpg

http://www.arab3.com/upload/images/Jun05/j...alem_gggggg.jpg

http://www.arab3.com/upload/images/Jun05/j...em_equation.jpg

 

 

ارجوا المساعدة جزاكم الله الخير والبركة

اخوكم عمار

 

Share this post


Link to post
Share on other sites

السلام عليكم

 

عند محاولتي التعامل مع اجهزة تحديد المواقع GPS وفي نفس الوقت بناء برنامج لحساب اوقات الصلاة واتجاه القبلة احتجت الى بعض الوظائف الغير موجودة في Visual Basic 6 او Visual Basic ,NET

 

وقد يحتاج الكثيرون هذه المعادلات سواء لحساب اوقات الصلاة او غيرها

 

ضع الكود التالية في ما يسمى Module

 

Option Explicit

Public Type Vector2D
   x As Single
   y As Single
End Type

Public Const PI As Double = 3.14159265358979 'Tan(1) * 180
Public Const D2R As Double = 1 / (180 * PI)
Public Const R2D As Double = 180 * PI
Public Const TwoPi As Single = 6.2831853071795
Public Const ThreePiByTwo As Single = 4.71238898038469
Public Const PiByTwo As Single = 1.5707963267949

Private dX As Long
Private dY As Long



Public Function ArcCos(A As Double) As Double

 'Inverse Cosine

   On Error Resume Next

       If A = 1 Then
           ArcCos = 0
           Exit Function
       End If

       ArcCos = Atn(-A / Sqr(-A * A + 1)) + 2 * Atn(1)
   On Error GoTo 0

End Function

Public Function ArcSin(x As Double) As Double

 'Inverse Sine

   On Error Resume Next
       ArcSin = Atn(x / Sqr(-x * x + 1))
   On Error GoTo 0

End Function

Public Function ArcTan(x As Double) As Double

 'Inverse Tangent

   On Error Resume Next
       ArcTan = Atn(x) * (180 / PI)
   On Error GoTo 0

End Function

Public Function DegToRad(Degrees As Single) As Single

 'DegToRad = Degrees / 180 * Pi

   DegToRad = Degrees * D2R

End Function

Public Function DotProduct2D(FirstVector As Vector2D, SecondVector As Vector2D) As Single

 'Calculates the dotproduct
 'Calculate the DotProduct based on FX*SX + FY*SY

   DotProduct2D = (FirstVector.x * SecondVector.x) + (FirstVector.y * SecondVector.y)
   'If DotProduct2D = 0 Then DotProduct2D = 1  -> replaced by:

   If DotProduct2D = 0 Then
       DotProduct2D = 1
   End If

End Function

Public Function GetAngle(P As Vector2D, Q As Vector2D) As Single

 'Get the angle of 2 vectors, note:
 'always assume that the third vector(the origin of the angle) of the 2 vectors is 0, if not it will return odd results

 Dim tmpAngle As Single

   tmpAngle = ArcCos(DotProduct2D(P, Q) / (VectorLength2D(Q) * VectorLength2D(P)))

   GetAngle = RadToDeg(tmpAngle)

   If Not Sgn(P.x) = Sgn(Q.y) Then
       GetAngle = 0 - GetAngle
   End If

End Function

Public Function GetDifferenceAngle(ByVal sourceAngle As Single, ByVal targetAngle As Single) As Single

 'get the difference between the source angle and the target angle (in radians)

   GetDifferenceAngle = targetAngle - sourceAngle

   Do While GetDifferenceAngle > PI
       GetDifferenceAngle = GetDifferenceAngle - TwoPi
   Loop

   Do While GetDifferenceAngle < -PI
       GetDifferenceAngle = GetDifferenceAngle + TwoPi
   Loop

End Function

Public Function GetDirection(ByVal xVelocity As Long, ByVal yVelocity As Long) As Single

 Dim Direction As Single

   If yVelocity < 0 Then
       Direction = PI + Atn(xVelocity / yVelocity)
     ElseIf yVelocity > 0 Then
       Direction = Atn(xVelocity / yVelocity)

       If Direction < 0 Then
           Direction = Direction + TwoPi
       End If

     ElseIf xVelocity <= 0 Then
       Direction = ThreePiByTwo
     Else
       Direction = PiByTwo
   End If

   GetDirection = Direction

End Function

Public Function GetDistance(CurX As Long, CurY As Long, NewX As Long, NewY As Long) As Long

   dX = NewX - CurX
   dY = NewY - CurY
   GetDistance = Sqr(dX * dX + dY * dY)

End Function

Public Function GetSpeed(ByVal xVelocity As Long, ByVal yVelocity As Long) As Single

   GetSpeed = Sqr(xVelocity ^ 2 + yVelocity ^ 2)

End Function

Public Function GetVectorPositionFromAngle(Position As Vector2D, Angle As Double, Steps As Double) As Vector2D

 'Calculate a new position based on an old position, an angle, and steps

   GetVectorPositionFromAngle.x = Position.x + Round(Steps * Cos(Angle))
   GetVectorPositionFromAngle.y = Position.y + Round(Steps * Sin(Angle))

End Function

Public Function GetVelocityX(ByVal Speed As Long, ByVal Direction As Single) As Long

   GetVelocityX = Speed * Sin(Direction)

End Function

Public Function GetVelocityY(ByVal Speed As Long, ByVal Direction As Single) As Long

   GetVelocityY = Speed * Cos(Direction)

End Function

Public Function IsInTriangle2D(Position As Vector2D, FirstVector As Vector2D, SecondVector As Vector2D, ThirdVector As Vector2D) As Boolean

 'Checks if a point is inside or outside a triangle

 Dim bc As Double
 Dim ca As Double
 Dim ab As Double
 Dim ap As Double
 Dim bp As Double
 Dim cp As Double
 Dim abc As Double

   bc = SecondVector.x * ThirdVector.y - SecondVector.y * ThirdVector.x
   ca = ThirdVector.x * FirstVector.y - ThirdVector.y * FirstVector.x
   ab = FirstVector.x * SecondVector.y - FirstVector.y * SecondVector.x
   ap = FirstVector.x * Position.y - FirstVector.y * Position.x
   bp = SecondVector.x * Position.y - SecondVector.y * Position.x
   cp = ThirdVector.x * Position.y - ThirdVector.y * Position.x
   abc = Sgn(bc + ca + ab)

   If (abc * (bc - bp + cp) > 0) And (abc * (ca - cp + ap) > 0) And (abc * (ab - ap + bp) > 0) Then
       IsInTriangle2D = True
   End If

End Function

Public Function RadToDeg(Radians As Single) As Single

 'RadToDeg = Radians * 180 / Pi

   RadToDeg = Radians * R2D

End Function

Public Function VectorAddition2D(FirstVector As Vector2D, SecondVector As Vector2D) As Vector2D

 'Returns two vectors added together

   With VectorAddition2D
       'Add
       .x = FirstVector.x + SecondVector.x
       .y = FirstVector.y + SecondVector.y
   End With

End Function

Public Function VectorDistance2D(FirstVector As Vector2D, SecondVector As Vector2D) As Single

 'Calculates the length based on Phytagoras theory

   VectorDistance2D = VectorLength2D(VectorSubtract2D(FirstVector, SecondVector))

End Function

Public Function VectorLength2D(Vector As Vector2D) As Single

 'Calculates the length based on Phytagoras theory

   VectorLength2D = Sqr((Vector.x ^ 2) + (Vector.y ^ 2))

End Function

Public Function VectorNormalize2D(Vector As Vector2D) As Vector2D

 'Returns a vector with a length of one, but still in the same direction

 Dim VecLength As Single

   VecLength = VectorLength2D(Vector)
   'If VecLength = 0 Then VecLength = 1  -> replaced by:

   If VecLength = 0 Then
       VecLength = 1
   End If

   With VectorNormalize2D
       .x = Vector.x / VecLength
       .y = Vector.y / VecLength
   End With

End Function

Public Function VectorSubtract2D(FirstVector As Vector2D, SecondVector As Vector2D) As Vector2D

 'Returns the FirstVector subtracted by the SecondVector

   With VectorSubtract2D
       'Subtract the vectors
       .x = FirstVector.x - SecondVector.x
       .y = FirstVector.y - SecondVector.y
   End With

End Function

 

لاستخدام نفس الوحدة النمطية في Visual Basic .NET لاتنسى تغيير بعض اسماء الوظائف مثل

 

SQR

الى

SQRT

 

Atn

الى

Atan

 

Sgn

الى

Sign

 

 

بالتوفيق

 

 

Share this post


Link to post
Share on other sites

السلام عليكم

شكر خاص لكل من ساهم في إغناء هذا الموضوع وجزاهم الله كل خير.

بعد الأخز بكل المعادلات الرياضية لحساب وقت الصلاة تمكنا وبحمد الله من إتمام برنامج بلغة DELPHI

وقد قمنا بإختباره على عدد كبير من المدن وكانت النتائج جيدة جدا .

 

ولكن عندما إختبرنا البرنامج على مدينة Athis_Mons(France واجهتنا مشكلتان:

خط العرض:48 درجة 43 دقيقة 0 ثواني ,اللأتجاه شمالي

خط الطول:2 درجة 24 دقيقة 0 ثواني ,اللأتجاه شرقي

GMT ZONE=2 التاريخ 5/7/2007

طريقة الحساب الجامعة الأسلامية في كراتشي(-18,-18)

 

المشكلة الأولى:

---------------------

 

أتت النتائج على الشكل التالي:

الفجر:2:30 ؟؟(خطأ)

الشروق:5:52

الظهر:13:54

العصر:18:10

المغرب:21:57

العشاء:25:19 ؟؟؟؟(خطأ)

 

ومقارنة مع برنامج أذان اتت النتائج متشابهة إلا في صلاتي الفجر(الفرق أكثر من ساعة) وفي صلاة العشاء أتت

النتيجة 25:19 أي اكبر من 24؟؟؟

 

وتذكيرا بالمعادلات المستعملة لصلاتي الفجر و العشاء:

ISHA TIME=LOCALNOON+(1/15)ACOS ((SIN(-18 )-SIN(Dec)*SIN(Lat))/(COS(Dec)*COS(Lat

ISHA TIME=13:54+11:24=25:19

 

FAJR TIME=LOCALNOON-(1/15)ACOS ((SIN(-18 )-SIN(Dec)*SIN(Lat))/(COS(Dec)*COS(Lat

 

هنا نرى أن وقت العشاء أكبر من 24 ساعة فما العمل في مثل هذه الحالة ؟؟؟

 

 

المشكلة الثانية:

---------------------

وتتمثل هذه المشكلة في أن نتيجة المعادلة :

((SIN(-18 )-SIN(Dec)*SIN(Lat))/(COS(Dec)*COS(Lat

لنفس المدينة ونفس المعطيات المذكورة أعلاه ولكن ليوم 20/6/2007

تساوي: -1.000409 الأمر الذي يتعارض مع خواص ال ACOSX حيث يجب أن تكون قيمةX

بين -1 و 1 فما العمل في مثل هذه الحالة؟؟؟

 

أفيدونا أفادكم الله ,ونظرأ إلى أن هاتين المشكلتين يقفا حاجزا أمام إتمام هذا البرنامج أو أي برنامج اخر مبني

على أساس المعادلات المطروحة في هذا الموضوع.

 

 

 

 

 

Share this post


Link to post
Share on other sites

السلام عليكم

المعروف من اقوال الفقهاء وارائهم الماخوذه عن اهل البيت عليهم السلام ان وقت فضيلة صلاة العصر يبدا يكون ظل الشاخص 2/7 اي سبعي الشاخص ، وهو يختلف عن الوقت في المذهب الشافي والذي يكون فيه ظل الشاخص 1/1 بداية لصلاة العصر وسوالي الى الاخوة الكرام هل يمكن تزويدي ببرنامج يحسب مواقيت صلاة العصر على اساس 2/7 اي سبعي الشاخص

مع خالص الشكر والتقدير والاحترام

اخوكم

حمودي

بغداد

Share this post


Link to post
Share on other sites
عزيزى سالم الجعيدى

شكرا لمجهوداتك فى مايتعلق بحساب مواقيت الصلاة انا اقوم بعمل نظام يعتمد على حساب مواعيد الصلاة

استخدم لغة ال c#

فى احد ردودك على الاخوة الكرام فى الخطوة السادسة

طلبت منه تعديل المعادلة

Text1.Text = Atn(Cos(23.4382082) * Tan(72.5321))

لتصبح

Text1.Text =180/pi* Atn(Cos(23.4382082*Pi/180) * Tan(72.5321*Pi/180))

مع مراعاة

‎ أن يكون الناتج لا يقل أو يزيد عن 360° وفق الملاحظات التالية ‏

إذا كان طول الشمس البروجي بين صفر و 90 فإن المطالع المستقيمة كما هو ‏

إذا كان الطول البروجي بين 90 – 180 فلابد من إضافة 180 على المطالع ‏

إذا كان الطول البروجي بين 180 _ 360 فلابد من إضافة 360 للمطالع

ولقد قمت باستخدام هذه الطريقة

وكانت معادلتى هيه

Alpha = 180/Math.PI*Math.Atan(Math.Cos(Obliquity*Math.PI/180) * Math.Tan

(Lambda*Math.PI/180)) وبعد التعويض عن قيم ال Obliquity و Lambda تصبح المعادلة

Alpha = 180/Math.PI*Math.Atan(Math.Cos(23.4375278*Math.PI/180) * Math.Tan

(307.93558507733997*Math.PI/180))

ولكن قيمة ال Alpha =-49.649730631225495 اى قيمة سالبة

لاتنتمى الى اى قيمة من 0 - 90 او 90 - 180 او 180 - 360

فاين الخطا فى معادلتى واشكرا لاهتمامك

 

 

 

ممكن اشوف الحسابات بلغة

C#

مشكورين

Share this post


Link to post
Share on other sites

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

لقد تحققت بالمشاهدة عند خطوط عرض مختلفة من 30 إلى 55 شمال خط عرض الإستواء من أن ظهور الشفق الأحمر أي الفجر الصادق يكون حينما تكون زاوية قرص الشمس 12 درجة تحت الأفق الشرقي.

كما أن الشفق الأحمر يزول حينما تكون زاوية قرص الشمس 12 درجة تحت الأفق الغربي و هو وقت دخول العشاء.

أدعو الله سبحانه و تعالى أن يتبع المسلمون أحاديث الرسول عليه الصلاة و السلام التي أوضحت لنا وقت الفجر الصادق بظهور الحمرة في الأفق الشرقي، و دخول و قت العشاء بزوال الشفق الأحمر و ليس كما قال الإمام أبو حنبفة بحلول السواد أي بزوال الشفق الأبيض.

انظر الملف المرفق هنا.

 

Share this post


Link to post
Share on other sites
السلام عليكم و رحمة الله و بركاته...،
لقد صممت ملف بالسي شارب و استخدمت فيه المعادلات السابق ذكرها و لقد عملت علي اكمل وجه
هذا هو الكود لعل البعض يستفيدون منه.


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);
}
}
}
}[/
font]

Share this post


Link to post
Share on other sites

السلام عليكم

 

المشكلة الأولى:

---------------------

 

أتت النتائج على الشكل التالي:

الفجر:2:30 ؟؟(خطأ)

الشروق:5:52

الظهر:13:54

العصر:18:10

المغرب:21:57

العشاء:25:19 ؟؟؟؟(خطأ)

 

أرى أن النتائج سليمة .

وتستطيع استخدام دالة باقي القسمة بالقسمة على 24

أو حذف 24 من أي وقت يزيد عن 24 وإضافة 24 لأي وقت ينقص عن صفر .

والوقت 25:19 هو بالحقيقة 01:19 في اليوم التالي .

 

المشكلة الثانية:

---------------------

وتتمثل هذه المشكلة في أن نتيجة المعادلة :

((SIN(-18 )-SIN(Dec)*SIN(Lat))/(COS(Dec)*COS(Lat

لنفس المدينة ونفس المعطيات المذكورة أعلاه ولكن ليوم 20/6/2007

تساوي: -1.000409 الأمر الذي يتعارض مع خواص ال ACOSX حيث يجب أن تكون قيمةX

بين -1 و 1 فما العمل في مثل هذه الحالة؟؟؟

قد أرجع لهذه النقطة في وقت آخر .

 

تحياتي .

Share this post


Link to post
Share on other sites

السلام عليكم

 

نعم المشكلة الثانية بهذه المعادلة (عندي) لا حل لها وحلها في برنامجكم هو إعطاء (لا قيمة) لكل وقت يكون ناتج المعادلة خارج النطاق .

 

تحياتي .

Share this post


Link to post
Share on other sites
المشكلة الثانية:

---------------------

وتتمثل هذه المشكلة في أن نتيجة المعادلة :

((SIN(-18 )-SIN(Dec)*SIN(Lat))/(COS(Dec)*COS(Lat

لنفس المدينة ونفس المعطيات المذكورة أعلاه ولكن ليوم 20/6/2007

تساوي: -1.000409 الأمر الذي يتعارض مع خواص ال ACOSX حيث يجب أن تكون قيمةX

بين -1 و 1 فما العمل في مثل هذه الحالة؟؟؟

 

 

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

 

تحية طيبة لجميع الزملاء الكرام

 

Lat= 48°43'00"N & Long= 2°24'00"E

 

 

20/6/2007

 

يكون ميل الشمس 23.43 بمعنى أن غاية ارتفاع الشمس سيكون 64.7ْ وغاية الإنخفاض سيكون -17.85 أي أن الشمس لن تبلغ الشفق الفلكي (-18) بمعنى أنها ستكون فوق الأفق الفلكي في هذا اليوم فاعتمد زاوية اخرى في هذه الحالة غير معيار الجامعة الأسلامية في كراتشي .

 

وفقكم الله

أحمد الأنصاري

Share this post


Link to post
Share on other sites

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

شكرا لك اخى سا لم الجعيدى

انا طالبة فى قسم الا لكترو نيك و انا بصدد التحضير لمشروع تخرجى فى الشهرالمقبل انشاء الله و قد استعملت المعادلات الى و ضعتها لحسا ب موا قيت الصلاة و قد كانت نتا ئج الحساب صحيحة و لكن واجهتنى مشكلة المتمتلة فى:

فى الا يام المحصور من 23 الى 30من الشهر التاسع من سنة 2008تكون مواقيت الصلوات خا طئة تماماحيت تكون كاالتالى:

الفجر16.24

الضهر23.47

العصر27.14

المغرب29.5

العشاء31.1

ونفس المشكل فى السنوات التا لية :2000 ،2009،2005،2002

ارجو مسا عدتى فى اقرب فرصة لا ن كل المشروع توقف و لم يبقى لى وقت كبير

 

Share this post


Link to post
Share on other sites

Je suis ATOUI HAMZA, voila le code source sous MATLAB 6.5 des temps de la prières

% Calcul des temps de prières

%============================

clear all,clc

% Paramètres d'entrée

%====================

% longitude

long = 7.49;

%long = 10.2167;

%long = 51.6;

%long = 31.2500;

% Altitude

Lat = 36.50;

%Lat = 36.8333;

%Lat = 25.25;

%Lat = 30.0500;

% Décalage ou la zone par rapport au grinitsh

zone = 1;

% date en Day/Month/Year

Year = 2008;

Month = 8;

Day = 22;

 

% La partie calcul

% Calcul du Jour Julien

D = (367*Year)-fix((7/4)*(Year+fix((Month+9)/12)))+fix(275*(Month/9))+Day-730531.5

 

% Longeur de Soleil

L = 280.461+0.9856474*D

 

if L > 360

L = (L/360 - fix(L/360))*360

end

 

% partie de Soleil moyenne

M = 357.528+0.9856003*D;

if M > 360

M = (M/360 - fix(M/360))*360;

end

 

% Longeur de Soleil toural

Lambda = L+(1.915*sin(M*pi/180))+(0.02*sin(2*M*pi/180))

 

% Obliquity

Obliquity = 23.439-0.0000004*D

 

% Alpha

Alpha = atan(cos(Obliquity*pi/180)*tan(Lambda*pi/180))*(180/pi)

if (Alpha > 360)

Alpha = (Alpha/360 - fix(Alpha/360))*360

end

if (Lambda>0 && Lambda<90)

Alpha = Alpha

elseif (Lambda>90 && Lambda<180)

Alpha = Alpha+180

elseif (Lambda>180 && Lambda<360)

Alpha = Alpha+360

end

% if (Alpha > 360)

% Alpha = (Alpha/360 - fix(Alpha/360))*360

% end

Alpha = Alpha+(90*(fix(Lambda/90)-fix(Alpha/90)))

 

% Temps de Soleil

ST = 100.46+0.985647352*D

if (ST > 360)

ST = (ST/360 - fix(ST/360))*360

end

 

% Declinaison

Dec = asin(sin(Obliquity*pi/180)*sin(Lambda*pi/180))*(180/pi);

%Dec = abs(Dec)

% Noon

Noon = Alpha-ST

if Noon > 360

Noon = (Noon/360 - fix(Noon/360))*360

end

if Noon < 0

Noon = Noon+360

end

 

%UTnoon

UTnoon = Noon-long

 

% Douhr

Localnoon = UTnoon/15+zone

 

% Altitude du centre de soleil "Shafii"

AsrAlt = atan(1+tan(abs(Lat-Dec)*pi/180))*(180/pi)

% Altitude du centre de soleil "Hanafi"

%AsrAlt = atan(2+tan(abs(Lat-Dec)*pi/180))*(180/pi);

 

% Arc de Asr

AsrArc = acos((sin((90-AsrAlt)*pi/180)-sin(Dec*pi/180)*sin(Lat*pi/180))/(cos(Dec*pi/180)*cos(Lat*pi/180)))*(180/pi)

 

% Asr

AsrTime = Localnoon+(AsrArc/15)

 

% Durinal Arc

DurinalArc = acos((sin(-0.8333*pi/180)-sin(Dec*pi/180)*sin(Lat*pi/180))/(cos(Dec*pi/180)*cos(Lat*pi/180)))*(180/pi)

 

% Sun Set

SunSet = Localnoon+(DurinalArc/15)

 

% Isha Arc

IshaArc = acos((sin(-18*pi/180)-sin(Dec*pi/180)*sin(Lat*pi/180))/(cos(Dec*pi/180)*cos(Lat*pi/180)))*(180/pi)

 

% Isha Time

IshaTime = Localnoon+(IshaArc/15)

 

% Fajr Arc

FajrArc = IshaArc

 

% Fajr Time

FajrTime = Localnoon-(FajrArc/15)

 

% Affichage des temps de prières

HR = fix(FajrTime);

MN = fix((FajrTime-fix(FajrTime))*60);

msg1 = sprintf('Fajr Time %2.2d:%2.2d',HR,MN);

disp(msg1);

 

HR = fix(Localnoon);

MN = fix((Localnoon-fix(Localnoon))*60);

msg2 = sprintf('Douhr Time %2.2d:%2.2d',HR,MN);

disp(msg2);

 

HR = fix(AsrTime);

MN = fix((AsrTime-fix(AsrTime))*60);

msg3 = sprintf('Asr Time %2.2d:%2.2d',HR,MN);

disp(msg3);

 

HR = fix(SunSet);

MN = fix((SunSet-fix(SunSet))*60);

msg4 = sprintf('Magrib Time %2.2d:%2.2d',HR,MN);

disp(msg4);

 

HR = fix(IshaTime);

MN = fix((IshaTime-fix(IshaTime))*60);

msg5 = sprintf('Isha Time %2.2d:%2.2d',HR,MN);

disp(msg5);

 

Priere = strvcat(msg1,msg2,msg3,msg4,msg5);

msgbox(Priere);

Share this post


Link to post
Share on other sites

الأخ/ العزيز محمد مجدي العزيز

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

اتوقع إنكم في الخير والعافية واتمني لكم ولأسرتكم ولمن يعز عليكم تمام الخير والعافية والتوفيق لكتابة المواضيع المفيدة هكدا:

وبعد ارجو منكم المساعدة (وهدا ليس لي ولكن لشخض اَخر هو مدرس في إحدي مدارس الشريعة هنا في الهند ويبحث في مجال مواقيت الصلوات في كتب التراثية الإسلامية) له سوال عن الأفاق الغروب والطلوع. يسأل " أي أفق أصح لقياس مواقيت الصلوات حيث يوجد اكثر اربعة اَفاق في الكتب" مثل أفق الحقيقي وأفق الظاهري وغيرها. إن شاء الله سأتصلك بعد تناقش معه في ايام القابل

ولكم جزيل الشكر والإحترام

والسلام عليكم

عبد الغفور توتونغال

كيرلا- الهند

هاتف: 00919895115768

البريد الإلكتروني cosmosarabic@yahoo.com

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×