الفرق بين المراجعتين ل"Algorithms/circle area"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE: مساحة الدائرة}}</noinclude>
 
<noinclude>{{DISPLAYTITLE: مساحة الدائرة}}</noinclude>
 +
الدائرة هي شكل ثنائي الأبعاد وهو عبارة عن مجموعة من النقاط في المستوى ثنائي الأبعاد والتي تبعد عن نقطة معينة (تسمى مركز الدائرة) بمسافة متساوية (تسمى نصف قطر الدائرة).
 +
 +
== مساحة الدائرة ==
 
يمكن حساب مساحة الدائرة باستخدام العلاقة الرياضية التالية:<syntaxhighlight lang="text">
 
يمكن حساب مساحة الدائرة باستخدام العلاقة الرياضية التالية:<syntaxhighlight lang="text">
 
Area = Pi * r * r
 
Area = Pi * r * r
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== تنفيذ الخوارزمية ==
+
=== تنفيذ الخوارزمية ===
  
 
تعرض الأمثلة التالية طريقة حساب مساحة الدائرة في عدد من لغات البرمجة:
 
تعرض الأمثلة التالية طريقة حساب مساحة الدائرة في عدد من لغات البرمجة:
سطر 76: سطر 79:
 
يمتاز المربع بأن أضلاعه الأربعة متساوية في الطول وأن قياس زواياه الأربعة 90 درجة، وتعرف الدائرة المحيطة بالمربع بأنّها الدائرة التي تمرّ على رؤوس المربع الأربعة.
 
يمتاز المربع بأن أضلاعه الأربعة متساوية في الطول وأن قياس زواياه الأربعة 90 درجة، وتعرف الدائرة المحيطة بالمربع بأنّها الدائرة التي تمرّ على رؤوس المربع الأربعة.
  
== خصائص الدائرة المحيطة بالمربع ==
+
=== خصائص الدائرة المحيطة بالمربع ===
  
 
* يقع مركز الدائرة المحيطة بمربع في نقطة التقاط قطري المربّع.
 
* يقع مركز الدائرة المحيطة بمربع في نقطة التقاط قطري المربّع.
سطر 82: سطر 85:
 
* يتساوى نصف قطري كلّ من الدائرة المحيطة بالمربع والمربع نفسه في الطول.
 
* يتساوى نصف قطري كلّ من الدائرة المحيطة بالمربع والمربع نفسه في الطول.
  
== خطوات الخوارزمية ==
+
=== خطوات الخوارزمية ===
  
 
يمكن استخدام العلاقة الرياضية التالية لحساب مساحة الدائرة المحيطة بالمربع:
 
يمكن استخدام العلاقة الرياضية التالية لحساب مساحة الدائرة المحيطة بالمربع:
سطر 101: سطر 104:
 
وبهذا فإن مساحة الدائرة = ‎<code>PI * r * r</code>‎ = ‎<code>(Pi * a  * a‎) / 2</code>‎
 
وبهذا فإن مساحة الدائرة = ‎<code>PI * r * r</code>‎ = ‎<code>(Pi * a  * a‎) / 2</code>‎
  
== تنفيذ الخوارزمية ==
+
=== تنفيذ الخوارزمية ===
  
 
تعرض الأمثلة التالية طريقة حساب مساحة الدائرة المحيطة بمربع في عدد من لغات البرمجة:
 
تعرض الأمثلة التالية طريقة حساب مساحة الدائرة المحيطة بمربع في عدد من لغات البرمجة:
سطر 165: سطر 168:
 
يمكن حساب مساحة كل قطعة من هاتين القطعتين بمعرفة نصف قطر الدائرة والزاوية التي تشكّل القطعة الصغرى.
 
يمكن حساب مساحة كل قطعة من هاتين القطعتين بمعرفة نصف قطر الدائرة والزاوية التي تشكّل القطعة الصغرى.
  
'''مثال:'''
+
'''مثال:'''<syntaxhighlight lang="text">
 
+
Input :
Input : <br />
+
radius = 21.0
radius = 21.0<br />
+
angle = 120.0
angle = 120.0<br />
+
Output :
Output :<br />
+
Area of minor segment 270.855
Area of minor segment 270.855<br />
 
 
Area of major segment 1114.59
 
Area of major segment 1114.59
  
Input :<br />
+
Input :
radius = 10.0<br />
+
radius = 10.0
angle = 90.0<br />
+
angle = 90.0
Output : <br />
+
Output :
Area of minor segment 28.5397<br />
+
Area of minor segment 28.5397
 
Area of major segment 285.619
 
Area of major segment 285.619
 +
</syntaxhighlight>
  
== خطوات الخوارزمية ==
+
=== خطوات الخوارزمية ===
  
 
يُربط طرفا الوتر بمركز الدائرة للحصول على قطاع من الدائرة والذي يضمّ زاوية في مركز الدائرة، ثم يُرسم عمود على الوتر يبدأ من مركز الدائرة، ويمكن ملاحظة أن ‎<code>∠ AOP = ∠ BOP = 1/2(angle)</code>‎.
 
يُربط طرفا الوتر بمركز الدائرة للحصول على قطاع من الدائرة والذي يضمّ زاوية في مركز الدائرة، ثم يُرسم عمود على الوتر يبدأ من مركز الدائرة، ويمكن ملاحظة أن ‎<code>∠ AOP = ∠ BOP = 1/2(angle)</code>‎.
سطر 190: سطر 193:
 
لنفترض أنّ الزاوية التي أنشأها القطاع هي <code>X</code>، فبهذا تصبح: ‎<code>∠ AOP = ∠ BOP = X/2</code>‎
 
لنفترض أنّ الزاوية التي أنشأها القطاع هي <code>X</code>، فبهذا تصبح: ‎<code>∠ AOP = ∠ BOP = X/2</code>‎
  
<source lang="">مساحة المثلث  = ‎`1/2 * base * height`‎
+
<source>Cos(X/2) = OP/AO  i.e. OP = AO * Cos(X/2)  
                    = 1/2 * AB * OP
 
 
 
اعتمادًا على قوانين علم المثلثات، فإنّ
 
 
 
```text
 
Cos(X/2) = OP/AO  i.e. OP = AO * Cos(X/2)  
 
 
                       OP = r * Cos(X/2)
 
                       OP = r * Cos(X/2)
 
Sin(X/2) = AP/AO  i.e. AP = AO * Sin(X/2)  
 
Sin(X/2) = AP/AO  i.e. AP = AO * Sin(X/2)  
سطر 319: سطر 316:
 
* صفحة [https://www.geeksforgeeks.org/area-circumscribed-circle-square/ Area of a Circumscribed Circle of a Square] في توثيق الخوارزميات في موقع GeeksforGeeks.
 
* صفحة [https://www.geeksforgeeks.org/area-circumscribed-circle-square/ Area of a Circumscribed Circle of a Square] في توثيق الخوارزميات في موقع GeeksforGeeks.
 
* صفحة [https://www.geeksforgeeks.org/program-find-area-circular-segment/ Program to find area of a Circular Segment] في توثيق الخوارزميات في موقع GeeksforGeeks.
 
* صفحة [https://www.geeksforgeeks.org/program-find-area-circular-segment/ Program to find area of a Circular Segment] في توثيق الخوارزميات في موقع GeeksforGeeks.
 
  
 
[[تصنيف: الخوارزميات]]
 
[[تصنيف: الخوارزميات]]
 
[[تصنيف: الخوارزميات الهندسية]]
 
[[تصنيف: الخوارزميات الهندسية]]

مراجعة 13:30، 17 نوفمبر 2019

الدائرة هي شكل ثنائي الأبعاد وهو عبارة عن مجموعة من النقاط في المستوى ثنائي الأبعاد والتي تبعد عن نقطة معينة (تسمى مركز الدائرة) بمسافة متساوية (تسمى نصف قطر الدائرة).

مساحة الدائرة

يمكن حساب مساحة الدائرة باستخدام العلاقة الرياضية التالية:

Area = Pi * r * r

تنفيذ الخوارزمية

تعرض الأمثلة التالية طريقة حساب مساحة الدائرة في عدد من لغات البرمجة:

  • C++‎:
#include <iostream> 
const double pi = 3.14159265358979323846; 
using namespace std; 

// تحسب الدالة مساحة الدائرة
float findArea(float r) 
{ 
	return (pi * r * r); 
} 
// اختبار الدالة السابقة
int main() 
{ 
	float r, Area; 
	r = 5; 

	// استدعاء الدالة
	Area = findArea(r); 
	// عرض ناتج الدالة
	cout << "Area of Circle is :" << Area; 
	return 0; 
}
  • بايثون:
def findArea(r): 
	PI = 3.142
	return PI * (r*r); 

# اختبار الدالة السابقة
print("Area is %.6f" % findArea(5));
  • جافا:
class Test 
{ 
	static final double PI = Math.PI; 
		
	static double findArea(int r) 
	{ 
	return PI * Math.pow(r, 2); 
	} 
		
	// اختبار التابع السابق
	public static void main(String[] args) 
	{ 
		System.out.println("Area is " + findArea(5)); 
	} 
}

تعطي الشيفرات السابقة المخرجات التالية:

Area is 78.550000

إيجاد مساحة الدائرة المحيطة بمربع

تحسب هذه الخوارزمية مساحة الدائرة المحيطة بمربع طول ضلعه معلوم.

مثال:

Input : a = 6
Output : Area of a circumscribed circle is : 56.55

Input : a = 4
Output : Area of a circumscribed circle is : 25.13

يمتاز المربع بأن أضلاعه الأربعة متساوية في الطول وأن قياس زواياه الأربعة 90 درجة، وتعرف الدائرة المحيطة بالمربع بأنّها الدائرة التي تمرّ على رؤوس المربع الأربعة.

خصائص الدائرة المحيطة بالمربع

  • يقع مركز الدائرة المحيطة بمربع في نقطة التقاط قطري المربّع.
  • يمكن رسم الدائرة المحيطة بمربع بواسطة رؤوس المربع الأربعة.
  • يتساوى نصف قطري كلّ من الدائرة المحيطة بالمربع والمربع نفسه في الطول.

خطوات الخوارزمية

يمكن استخدام العلاقة الرياضية التالية لحساب مساحة الدائرة المحيطة بالمربع:

(PI * a * a)/2

تمثّل a طول ضلع المربع المحاط بالدائرة، وPI النسبة الثابتة.

يمكن اشتقاق العلاقة السابقة بالطريقة التالية:

مساحة الدائرة = PI * r * r

نصف قطر الدائرة = قطر المربع / 2

ولمّا كان طول قطر المربع = ‎√(2 * a * a)‎

فإنّ نصف قطر الدائرة = ‎√(2 * a * a) / 2‎‎ = ‎√((a * a) / 2)

وبهذا فإن مساحة الدائرة = ‎PI * r * r‎ = ‎(Pi * a * a‎) / 2

تنفيذ الخوارزمية

تعرض الأمثلة التالية طريقة حساب مساحة الدائرة المحيطة بمربع في عدد من لغات البرمجة:

  • C++‎:
#include <stdio.h> 
#define PI 3.14159265 

float areacircumscribed(float a) 
{ 
	return (a * a * (PI / 2)); 
} 

// اختبار الدالة السابقة
int main() 
{ 
	float a = 6; 
	printf(" Area of an circumscribed circle is : %.2f ", 
		areacircumscribed(a)); 
	return 0; 
}
  • بايثون:
PI = 3.14159265

def areacircumscribed(a): 

	return (a * a * (PI / 2)) 

# اختبار الدالة السابقة
a = 6
print(" Area of an circumscribed circle is :", 
		round(areacircumscribed(a), 2))
  • جافا:
import java.io.*; 
class Gfg { 

	static float areacircumscribed(float a) 
	{ 
		float PI = 3.14159265f; 
		return (a * a * (PI / 2)); 
	} 

	// اختبار التابع السابق
	public static void main(String arg[]) 
	{ 
		float a = 6; 
		System.out.print("Area of an circumscribed"
						+ "circle is :"); 
		System.out.println(areacircumscribed(a)); 
	} 
}

إيجاد مساحة قطعة من الدائرة

يقسم الوتر chord الدائرة إلى قسمين يطلق عليهما تسمية القطعة، وتسمى إحدى القطعتين بالقطعة الصغرى (ذات المساحة الصغيرة) والأخرى بالقطعة الكبرى (ذات المساحة الكبيرة).

يعرض الشكل التالي دائرة يقسمها الوتر AB إلى قطعتين:

يمكن حساب مساحة كل قطعة من هاتين القطعتين بمعرفة نصف قطر الدائرة والزاوية التي تشكّل القطعة الصغرى.

مثال:

Input :
radius = 21.0
angle = 120.0
Output :
Area of minor segment 270.855
Area of major segment 1114.59

Input :
radius = 10.0
angle = 90.0
Output :
Area of minor segment 28.5397
Area of major segment 285.619

خطوات الخوارزمية

يُربط طرفا الوتر بمركز الدائرة للحصول على قطاع من الدائرة والذي يضمّ زاوية في مركز الدائرة، ثم يُرسم عمود على الوتر يبدأ من مركز الدائرة، ويمكن ملاحظة أن ‎∠ AOP = ∠ BOP = 1/2(angle)‎.

مساحة القطعة = مساحة القطاع - مساحة المثلث OAB

 = pi * r^2 (angle/360) - مساحة المثلث OAB

لنفترض أنّ الزاوية التي أنشأها القطاع هي X، فبهذا تصبح: ‎∠ AOP = ∠ BOP = X/2

Cos(X/2) = OP/AO  i.e. OP = AO * Cos(X/2) 
                       OP = r * Cos(X/2)
Sin(X/2) = AP/AO  i.e. AP = AO * Sin(X/2) 
                       AP = r * Sin(X/2)

وهكذا فإنّ:

القاعدة = `AB = AP + PB`
          = 2 * AP
          = 2 * r * Sin(X/2)

الارتفاع = ‎`OP = r * Cos(X/2)`‎

وبهذا تصبح مساحة المثلث:

Area of triangle = 1/2 * (2 * r * Sin(X/2)) * (r * Cos(X/2))
                    = 1/2 * r2 * Sin(X) 
                      [Using identity 2 * Sin(A) * Cos(A)]
                    = Sin(2 * A))

وتساوي مساحة القطعة:

Area of Segment =  pi * r2 * (angle/360) - 1/2 * r2 * Sin(angle)

تنفيذ الخوارزمية

تعرض الأمثلة التالية طريقة تنفيذ الخوارزمية في عدد من لغات البرمجة:

  • C++‎:
#include <bits/stdc++.h> 
using namespace std; 

float pi = 3.14159; 

float area_of_segment(float radius, 
					float angle) 
{ 
	// حساب مساحة القطاع
	float area_of_sector = pi * 
						(radius * radius) 
						*(angle / 360); 

	// حساب مساحة المثلث
	float area_of_triangle = (float)1 / 2 * 
							(radius * radius) * 
							sin((angle * pi) / 180); 

	return area_of_sector - area_of_triangle; 
} 

// اختبار الدالة السابقة
int main() 
{ 
	float radius = 10.0, angle = 90.0; 
	cout << "Area of minor segment = "
		<< area_of_segment(radius, angle) << endl; 

	cout << "Area of major segment = "
		<< area_of_segment(radius, (360 - angle)); 
}
  • بايثون:
import math 

pi = 3.14159

def area_of_segment(radius, angle): 
	# حساب مساحة القطاع
	area_of_sector = pi *
					(radius * radius) 
					* (angle / 360) 

	# حساب مساحة المثلث
	area_of_triangle = 1 / 2 *
					(radius * radius) *
					math.sin((angle * pi) / 180) 

	return area_of_sector - area_of_triangle; 


# اختبار الدالة السابقة
radius = 10.0
angle = 90.0
print("Area of minor segment =", 
	area_of_segment(radius, angle)) 
print("Area of major segment =", 
	area_of_segment(radius, (360 - angle)))
  • جافا:
class GFG { 
static float pi = 3.14159f; 

static float area_of_segment(float radius, 
							float angle) 
{ 
	// حساب مساحة القطاع
	float area_of_sector = pi * 
(radius * radius) * (angle / 360); 

	// حساب مساحة المثلث
	float area_of_triangle = 
		(float)1 / 2 * (radius * radius) * 
		(float)Math.sin((angle * pi) / 180); 

	return area_of_sector - area_of_triangle; 
} 

// اختبار التابع السابق
public static void main(String[] args) 
{ 
	float radius = 10.0f, angle = 90.0f; 
	System.out.println("Area of minor segment = " + 
					area_of_segment(radius, angle)); 

	System.out.println("Area of major segment = " + 
					area_of_segment(radius, (360 - angle))); 
} 
}