Окръжност - радиус, диаметър, периметър и лице

координати на диаметър - лице и периметър на окръжност
лице на сектор от окръжност
радиус на вписана окръжност в равностранен триъгълник
две взаимно перпендикулярни хорди в окръжност
лице на пръстен
разстояние между точка и окръжност
взаимно разположение на две окръжности
вписана и описана окръжност
описана, вписана и външно вписана окръжност
дължина на окръжност и лице на кръг

Окръжност е геометрично място на точки в равнината, намиращи се на дадено разстояние R от определена точка О, наречена център. Обикновено координатите на центъра се означават с O(x,y), където x,y, дават координатите съответно по абсциса и ордината. С латинската буква R се означава радиус на окръжност – еднаквото разстояние на всички точки до центъра, с латинската буква D – диаметър на окръжност: D=2*R. Хорда в окръжност е отсечката между две точки от същата окръжност. Най-дългата хорда в една окръжност е нейния диаметър. Симетралата на всяка хорда минава през центъра на същата окръжност. Данни за хорда в окръжност са нейната дължина, ъгъла на дъгата, която и принадлежи, координати за начало и край. Кръг е множеството от точки в равнината, затворени от дадена окръжност - както принадлежащите на същата окръжност, така и намиращите се на разстояние по-малко от радиуса й. Онази част от кръга между хорда и принадлежащата му дъга се нарича сегмент. Сектор е като парче от торта – част от равнината между дъга и центъра на окръжността. Ако има две концентрични окръжности с различни радиуси, то те ограничават част от равнината наречена пръстен. Пръстенът се задава с два радиуса / диаметъра за всяка от двете окръжности.

координати на диаметър - лице и периметър на окръжност

Имаме въведени координати на две точки, представляващи крайните точки на диаметър в окръжност. Да се изчислят лице и обиколка / периметър на тази окръжност.

координати на диаметър - лице и периметър на окръжност

Алгоритъм:

Най-дългата хорда в една окръжност е нейния диаметър. Центърът на всяка окръжност лежи на диаметъра й и го разделя на две равни части. Въвеждат се координатите на двете точки x1,y1; x2, y2. В случая дължината на диаметъра за окръжност се намира чрез теоремата на Питагор d=sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)). Обиколка, периметър на окръжност L =pi*d. Лице на окръжност S=pi*d*d/4

Следващата примерна програма дава решена задача за лице и периметър на окръжност по въведен диаметър:
#include <cmath>
using namespace std;
double const pi=3.141592;

void okryvnost (double x1,double x2,double y1, double y2)
{double x0,y0,D,L,S;
   x0 = x1-x2;//proekciqta po os X - abscisa
   y0 = y1-y2; //proekciq po os Y - ordinata
   D = sqrt(x0*x0 + y0*y0);//teorema na Pitagor
 //koordinati na centyr - sredna tochka na otsechka
   x0=(x1+x2)/2;//polusumata mevdi koordinati na nachalna i krajna tochka
   y0=(y1+y2)/2;    
   cout<<" koordinati na centyr Xo="<<x0<<"; Yo="<<y0<<endl; 
   cout<<" diametyr na okryvnost: "<<D<<endl;
   L=pi*D;
   cout<<" perimetyr na okryvnost L= "<<L<<endl;
   S=pi*D*D/4;
   cout<<" lice na okryvnost S= "<<S<<endl;     
}// okryvnost  

int main()
{ double x1,x2,y1,y2;
  char ose;  
  cout<<"Diametyr na okryvnost e zadaden s nachalna i krajna tochka. Za \n";
  cout<<"dwete tochki sa wywedeni koordinatite im po osite X i Y - X1,Y1,X2,Y2\n";
  cout<<"estestweni chisla ot interwala [1..101]. Da se ichislqt: \n";
  cout<<"koordinatite na centyra, perimetyra L i liceto S na tazi okryvnost.\n";
  cout<<"Primer: x1=1,y1=1,x2=4,y2=5 Izhod: centyt:2.5,3 L=15.708; S= 3.92699\n";
  do {
   cout<<"Wywedete x1: ";cin>>x1;
   cout<<"Wywedete y1: ";cin>>y1;
   cout<<"Wywedete x2: ";cin>>x2;
   cout<<"Wywedete y2: ";cin>>y2;
   okryvnost (x1,x2,y1, y2);
   cout<<"She wywevdate li drugi danni <y/n>: ";cin>>ose;
} while (ose=='y');  
   system("pause");
   return 0;
}//kraj na programa okryvnost 

Начало на страницата

лице на сектор от окръжност

Сектор на окръжност е частта от кръг заключена между два радиуса, като се приема първия радиус за начален, а втория за краен. Ако си представим кръга като торта, то сектора е част от тортата. В зависимост от въведения начален и краен ъгъл площта на сектора се променя, но не може да бъде по-голям от площта на кръга. Централният ъгъл yg може да бъде изчислен като разлика между началния и крайния ъгъл. Приемаме, че ъглите са зададени с градуси. Лицето на сектора е S= (yg/360)*pi*r*r, където r е радиус на кръга, а pi е числото на Лудолф 3.141592...
Ако разглеждаме сектора като равнинна фигура с 3 страни – двата радиуса и дъга с дължина 2*pi*r*yg/360, то неговия периметър е удвоения размер на радиуса 2*r и дължината на дъгата
Лицето на сектор е (yg - ъгъл на дъгата в градуси) yg*pi*r*r/360, т.к. лицето на кръга е: pi*r*r
Пръстен е частта от равнината затворена между две концентрични окръжности с различни радиуси.
Имаме следната задача: зададен е пръстен съответно с радиуси R1 > R2. От пръстена е отрязан сектор с начален и краен ъгъл ygn < ygk. Търсим периметър и лице на сектора от този пръстен.

лице на сектор от окръжност

Алгоритъм:

Изчисляваме централния ъгъл на сектора yg=ygk-ygn
Изчисляваме разликата между двата радиуса R=R2-R1
Две от страните на сектора имат дължина R, а другите две са дъги с централен ъгъл yg. Така периметъра е сума от 2*R и дължините на двете дъги (от окръжностите с радиуси R1,R2 и централен ъгъл yg).
Лицето на сектора е разлика от лицата на секторите от голямата и малка окръжност.

Следващата примерна програма дава решена задача за сектор на окръжност:
#include<iostream>
#include<cmath>
using namespace std;

int main()
{double r1,r2,r3,ug1,ug2,ug3;
 double S,P,Pi=3.1415926;
 cout<<"Imate dwe koncentrichni okryvnosti syotwetno s radiusi R1 < R2.\n";
 cout<<"W taka formiraniq prysten e izrazan sektor po wytreshnata okryvnost.\n";
 cout<<"Dadeni sa nachalniq i krajniq ygyl na sektora ug1 < ug2.\n";
 cout<<"Da se systawi programa, chrez koqto se wywevdat stojnosti za:\n";
 cout<<"R1,R2 - estestweni chisla ot interwala [1..101] i yglite ug1, ug2\n";
 cout<<"estestweni chisla ot interwala [0..350] w gradusi. Programata da\n";
 cout<<"izwede perimetyr i lice na izrqzanata chast:\n";
 cout<<"Primer: ug1=0, ug2=90, R1=10; R2=20,  Izhod: P=67.1239,  S=235.619 \n";
 cout<<"Vuvedete nachalen ugul: ";cin>>ug1;
 cout<<"Vuvedete kraen ugul: ";cin>>ug2;
 ug3=fabs(ug2-ug1);//zashita po whod
 cout<<"Vuvedete po-malkiq raduis: ";cin>>r1;
 cout<<"Vuvedete po-golemiq raduis: ";cin>>r2;
  r3=fabs(r2-r1);//zashita po whod
 // s1=((ug3/360)*Pi*r1*r1);
 // s2=((ug3/360)*Pi*r2*r2);
 // S=s1-s2; //razlika w licata na dwata sektora 
 S= ug3*Pi*fabs(r2*r2-r1*r1)/360;
 cout<<"Liceto na tursenata figura e: "<<S<<endl;
 // p1=((ug3/360)*Pi*2*r1);
 // p2=((ug3/360)*Pi*2*r2);
 // P=p1+p2+r3+r3;//razlikata mevdu dwata radiusa + dylvinata na dwete dygi
 P=2*r3 + 2*Pi*ug3*(r1+r2)/360;
 cout<<"Perimeturut na dadenata figura e: "<<P<<endl;
 system("pause");
 return 0;
}//kraj na programa okryvnost 

Начало на страницата

радиус на вписана окръжност в равностранен триъгълник

Имаме равностранен триъгълник с въведена дължина на страната a. В триъгълника е вписана окръжност. Търсим радиуса R на тази вписана окръжност.

Алгоритъм:

Лицето на равностранния триъгълник S = a*a *sqrt(3)/4 - формулата може да бъде изведена чрез формулата на Херон. Радиусът на вписана в триъгълник окръжност е R = 2*S/(a+b+c) = 2*S/(3*a)

Следващата примерна програма дава решена задача за радиус на вписана окръжност в равностранен триъгълник:
#include <iostream>
#include <cmath>
using namespace std;

int main()
{int a;
 double S,R;
 char ose;
 cout<<"W rawnostranen triygylnik sys strana a e wpisana okryvnost.\n";
 cout<<"Tyrsim radiusa na okryvnostta R. Da se systawi programa, chrez koqto \n";
 cout<<"se wywevda stranata a i se izwevda radiusa R na tazi okryvnost.\n";
 cout<<"Primer 10 Izhod R = 2.88675 \n";
 do {
  cout<<"Wywedete stranata A: ";cin>>a;
  S=a*a*sqrt(3)/4;//Heron sqrt(p*(p-a)*(p-a)*(p-a) p=1.5*a 
  cout<<"lice na triygylnika: "<<S<<endl;
  R= 2*S/(3*a); //R=2*S/(a+b+c)   
  cout<<"Radius na wpisanata okryvnost: "<<R<<endl;
  cout<<"She wywevdate li drugi danni <y/n>: ";cin>>ose;
 } while (ose=='y');
 system("pause");
 return 0;
}//kraj na programa okryvnost 

Начало на страницата

две взаимно перпендикулярни хорди в окръжност

Имаме окръжност и две взаимно перпендикулярни хорди в нея AB, CD. Хордите се пресичат в точка M. Въведени са дължините AM, BM, CM, DM. Търсим разстоянието на хордите до центъра на същата окръжност.

две взаимно перпендикулярни хорди в окръжност

Алгоритъм

Задачата може да бъде решена по няколко начина, но тук ще разгледаме само два от тх.
1) Нека разгледаме хордите AB, CD с пресечна точка M. За триъгълника ABC знаем основата AB и височината към нея CM. Sabc = (AB*CM)/2, от теоремата на Питагор AC = sqrt(AM*AM +CM*CM) BC = sqrt(BM*BM + CM*CM). Радиусът R на тази окръжност (триъгълникът ABC е вписан в нея) R = 4*S/ (AB + AC + BC). Отбелязваме с O центъра на описаната окръжност. Разглеждаме равнобедрения триъгълник AOB - двете му бедра са R. Можем да намерим Saob по формулата на Херон. Полупериметърът p= (AB + R + R)/2. Saob = sqrt(p*(p-AB)* (p-R) * (p-R)). Разстоянието на хордата AB от центъра на окръжността hab е и височина в триъгълника AOB. Аналогично разглеждаме равнобедрения триъгълник COD, с основа CD и бедра R. Този триъгълник е вписан в същата окръжност. Изчисляваме лицето Scod по формулата на Херон. Полупериметърът p= (CD + R + R)/2. Scod = sqrt(p*(p-CD)* (p-R) * (p-R)). Разстоянието от центъра на окръжността hcd на тази хорда CD е и височина в триъгълника COD. Вижда се, че този алгоритъм е обемист, изисква изчисляване радиус на описаната окръжност за достигане на желания резултат. Дава много възможности, но има голяма сложност и е бавен – налага изчисляване на корен квадратен.
2) Този алгоритъм е значително по-лек и не изисква изчисляване радиус на окръжност. Ползва неявно дадена информация. Симетралата за всяка хорда от окръжност минава през средата на тази хорда и е перпендикулярна към същата хорда. По условие двете хорди са от една окръжност и са взаимно перпендикулярни, т.е. и за двете хорди има един и същ център на окръжност. Ще ползваме абсолютна стойност за разстояние на хорда до центъра на тази окръжност. Така разстоянието hcd от центъра до хорда AB е hcd = abs(0.5*CD - MD). Аналогично ще отбележим с hab разстоянието до хорда CD hab=abs(0.5* AB – AM)

Следва примерна програма даваща решена задача за разстояние на всяка хорда до центъра като се ползва втория описан алгоритъм.
#include<iostream>
#include <cmath>
using namespace std;

void razst()
{int AM, BM, CM,DM;
  double hab, hcd, AB,CD;
  cout<<"Wywedete dylvina na pyrwata chast za horda AB: ";cin>>AM;
  cout<<"Wywedete dylvina na wtorata chast za horda AB: ";cin>>BM;
  AB=(double)(AM+BM)/2;
  cout<<"Wywedete dylvina na pyrwata chast za horda CD: ";cin>>CM;
  cout<<"Wywedete dylvina na wtorata chast za horda CD: ";cin>>DM;
  CD=(double) (CM+DM)/2;
  hcd=abs(AB-AM);
  hab=abs(CD-CM);
  cout<<"Razstoqnie na horda AB do centyra: "<<hab<<endl;
  cout<<"Razstoqnie na horda CD do centyra: "<<hcd<<endl;
}//void horda 

int main()
{ char ose;
  cout<<"Imate dwe wzaimno perpendikulqrni hordi AB, CD ot edna okryvnost.\n";
  cout<<"Presesechnata im tochka gi razdelq syotwetno na AM, BM, CM, DM.\n";
  cout<<"Po wywedeni stojnosti za AM, BM, CM, DM izchislete razstoqnieto\n"; 
  cout<<"na hordite do centyra na tazi okryvnost.\n";
  cout<<"Primer: 3,4 12,22 Izhod: 5, 0.5 \n";
 do {
  razst();
  cout<<"She wywevdate li drugi danni <y/n>: ";cin>>ose;
} while (ose=='y');
 system("pause");
 return 0;
}//kraj na programa okryvnost 

Начало на страницата

лице на пръстен

Пръстен – две концентрични окръжности с различен радиус. Имаме две концентрични окръжности формиращи пръстен. Въведени са радиусите на тези окръжности - естествени числа. Търсим лицето на пръстена, както и лице и обиколка за всяка от разглежданите окръжности.

Алгоритъм

Изчислява се периметър / обиколка на окръжност по формулата: L=2*pi*R. Изчислява се лице на кръг по формулата: S=pi*R*R. Лицето на пръстена е разликата между изчислените лица на двете окръжности: Sp=pi*(R1*R1 - R2*R2)

Следващата примерна програма дава решена задача за изчисляване лице на пръстен:
#include <iostream>
using namespace std;

double const pi=3.141992;

void prysten ()
{ int r1,r2,r;
 double L1,L2,L,S1,S2,S;
 cout<<"Wywedete radiusa r1 [1..101]: ";cin>>r1;
 cout<<"Wywedete radiusa r2 [1..101]: ";cin>>r2;
 if (r1>r2) {r=r1;r1=r2;r2=r;}
 L1=2*pi*r1;
 L2=2*pi*r2;
 S1=pi*r1*r1;
 S2=pi*r2*r2;
 S=S2-S1;
 cout<<"obikolka na po-malkata okryvnost: "<<L1<<endl;
 cout<<"obikolka na po-golqmata okryvnost: "<<L2<<endl;
 cout<<"lice na po-malkata okryvnost: "<<S1<<endl;
 cout<<"lice na po-golqmata okryvnost: "<<S2<<endl;
 cout<<"lice na prystena e: "<<S<<endl;
 }// prysten 

 main ()
 {char ose;
  cout<<"Da se systawi programa, chez koqto se wywevdat 2 estestweni chisla\n";
  cout<<"r1 i r2 ot interwala [1..101]. r1 i r2 sa radiusi na dwe koncentrichni\n";
  cout<<"okryvnosti. Da se izwedat liceto i obikolkata na dwete okyvnodsti i\n";
  cout<<"liceto na prystena, kojto formirat.\n";
  cout<<"Primer: 5, 12  Izhod Prysten lice 373.897\n";
  do
  { prysten();
   cout<<"She wywevdate li drugi danni <y/n>: ";cin>>ose;
  } while (ose=='y');
system ("pause");
return 0;
}//kraj na programa okryvnost 

Обяснени и решени задачи с подобни алгоритми, функции и служебни думи са разгледани в страницата с електронни уроци по информатика - програмиране.
Илюстриране работата на характерни алгоритми можете да намерите в предоставените електронни помагала съдържащи решени задачи, примери.

Начало на страницата

 
Размер на шрифта
Increase Font Size Option 3 Reset Font Size Option 3 Decrease Font Size Option 3
Bulgarian Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish
Търсене в сайта: