الفرق بين المراجعتين لصفحة: «Algorithms/circle area»

من موسوعة حسوب
لا ملخص تعديل
طلا ملخص تعديل
 
(5 مراجعات متوسطة بواسطة مستخدم واحد آخر غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:حساب مساحة الدائرة}}</noinclude>
<noinclude>{{DISPLAYTITLE: مساحة الدائرة}}</noinclude>
الدائرة هي شكل ثنائي الأبعاد وهو عبارة عن مجموعة من النقاط في المستوى ثنائي الأبعاد والتي تبعد عن نقطة معينة (تسمى مركز الدائرة) بمسافة متساوية (تسمى نصف قطر الدائرة).
 
== مساحة الدائرة ==
يمكن حساب مساحة الدائرة باستخدام العلاقة الرياضية التالية:<syntaxhighlight lang="text">
يمكن حساب مساحة الدائرة باستخدام العلاقة الرياضية التالية:<syntaxhighlight lang="text">
Area = Pi * r * r
Area = Pi * r * r
</syntaxhighlight>
</syntaxhighlight>


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


تعرض الأمثلة التالية طريقة حساب مساحة الدائرة في عدد من لغات البرمجة:
تعرض الأمثلة التالية طريقة حساب مساحة الدائرة في عدد من لغات البرمجة:
سطر 32: سطر 35:
}  
}  
</source>
</source>
* بايثون:
* [[Python|بايثون]]:


<source lang="python">def findArea(r):  
<source lang="python">def findArea(r):  
سطر 62: سطر 65:


<source lang="text">Area is 78.550000</source>
<source lang="text">Area is 78.550000</source>
== إيجاد مساحة الدائرة المحيطة بمربع ==
تحسب هذه الخوارزمية مساحة الدائرة المحيطة بمربع طول ضلعه معلوم.
مثال:
<source lang="text">Input : a = 6
Output : Area of a circumscribed circle is : 56.55
Input : a = 4
Output : Area of a circumscribed circle is : 25.13</source>
يمتاز المربع بأن أضلاعه الأربعة متساوية في الطول وأن قياس زواياه الأربعة 90 درجة، وتعرف الدائرة المحيطة بالمربع بأنّها الدائرة التي تمرّ على رؤوس المربع الأربعة.
=== خصائص الدائرة المحيطة بالمربع ===
* يقع مركز الدائرة المحيطة بمربع في نقطة التقاط قطري المربّع.
* يمكن رسم الدائرة المحيطة بمربع بواسطة رؤوس المربع الأربعة.
* يتساوى نصف قطري كلّ من الدائرة المحيطة بالمربع والمربع نفسه في الطول.
=== خطوات الخوارزمية ===
يمكن استخدام العلاقة الرياضية التالية لحساب مساحة الدائرة المحيطة بالمربع:
<source lang="text">(PI * a * a)/2</source>
تمثّل <code>a</code> طول ضلع المربع المحاط بالدائرة، و<code>PI</code> النسبة الثابتة.
يمكن اشتقاق العلاقة السابقة بالطريقة التالية:
مساحة الدائرة = <code>PI * r * r</code>
نصف قطر الدائرة = قطر المربع / 2
ولمّا كان طول قطر المربع = ‎<code>√(2 * a * a)‎</code>‎
فإنّ نصف قطر الدائرة = ‎<code>√(2 * a * a) / 2‎</code>‎ = ‎<code>√((a * a) / 2)</code>‎
وبهذا فإن مساحة الدائرة = ‎<code>PI * r * r</code>‎ = ‎<code>(Pi * a  * a‎) / 2</code>‎
=== تنفيذ الخوارزمية ===
تعرض الأمثلة التالية طريقة حساب مساحة الدائرة المحيطة بمربع في عدد من لغات البرمجة:
* C++‎:
<source lang="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;
}
</source>
* [[Python|بايثون]]:
<source lang="python">PI = 3.14159265
def areacircumscribed(a):
return (a * a * (PI / 2))
# اختبار الدالة السابقة
a = 6
print(" Area of an circumscribed circle is :",
round(areacircumscribed(a), 2)) </source>
* جافا:
<source lang="java">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));
}
} </source>
== إيجاد مساحة قطعة من الدائرة ==
يقسم الوتر chord الدائرة إلى قسمين يطلق عليهما تسمية القطعة، وتسمى إحدى القطعتين بالقطعة الصغرى (ذات المساحة الصغيرة) والأخرى بالقطعة الكبرى (ذات المساحة الكبيرة).
يعرض الشكل التالي دائرة يقسمها الوتر <code>AB</code> إلى قطعتين:
يمكن حساب مساحة كل قطعة من هاتين القطعتين بمعرفة نصف قطر الدائرة والزاوية التي تشكّل القطعة الصغرى.
'''مثال:'''<syntaxhighlight lang="text">
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
</syntaxhighlight>
=== خطوات الخوارزمية ===
يُربط طرفا الوتر بمركز الدائرة للحصول على قطاع من الدائرة والذي يضمّ زاوية في مركز الدائرة، ثم يُرسم عمود على الوتر يبدأ من مركز الدائرة، ويمكن ملاحظة أن: ‎<code>∠ AOP = ∠ BOP = 1/2(angle)</code>‎.
يمكن اشتقاق العلاقة الرياضية الخاصة بحساب مساحة قطعة من الدائرة كما يلي:
مساحة القطعة = مساحة القطاع - مساحة المثلث OAB
= <code>pi * r^2 (angle/360)‎</code> - مساحة المثلث OAB<br />لنفترض أنّ الزاوية التي أنشأها القطاع هي <code>X</code>، فبهذا تصبح: ‎<code>∠ AOP = ∠ BOP = X/2</code>‎<source lang="text">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)</source>
وهكذا فإنّ:
<source lang="text">القاعدة = AB = AP + PB
          = 2 * AP
          = 2 * r * Sin(X/2)
الارتفاع = OP = r * Cos(X/2)</source>
وبهذا تصبح مساحة المثلث:
<source lang="text">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))</source>
وتساوي مساحة القطعة:
<source lang="text">Area of Segment =  pi * r2 * (angle/360) - 1/2 * r2 * Sin(angle)</source>
=== تنفيذ الخوارزمية ===
تعرض الأمثلة التالية طريقة تنفيذ الخوارزمية في عدد من لغات البرمجة:
* C++‎:
<source lang="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));
}
</source>
* [[Python|بايثون]]:
<source lang="python">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)))
</source>
* جافا:
<source lang="java">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)));
}
} </source>
== مصادر ==
* صفحة [https://www.geeksforgeeks.org/c-program-find-area-circle/ Program to find area of a circle] في توثيق الخوارزميات في موقع GeeksforGeeks.
* صفحة [https://www.geeksforgeeks.org/c-program-find-area-circle/ Program to find area of a circle] في توثيق الخوارزميات في موقع 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.


[[تصنيف: الخوارزميات]]
[[تصنيف: الخوارزميات]]
[[تصنيف: الخوارزميات الهندسية]]
[[تصنيف: الخوارزميات الهندسية]]

المراجعة الحالية بتاريخ 09:10، 7 أكتوبر 2022

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

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

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

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))); 
} 
}

مصادر