Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.82
Ch3r3p0sha
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 11
#1

Окружности и треугольник! - C++

24.11.2009, 01:40. Просмотров 4236. Ответов 5
Метки нет (Все метки)

Даны вещественные числа x1,y1,x2,y2,x3,y3. Каждая пара чисел xi,yi, где i=1,2,3, определяет координаты одной из вершин плоского треугольника. Вычислить координаты центра и радиус окружности, описанной вокруг этого треугольника, и координаты центра и радиус окружности, вписанной в этот треугольник. Вычисление организовать при помощи подпрограмм.
Вот код, где здесь ошибка?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <stdio.h>
#include <math.h>
#include <conio.h>
//вычисляет x0 описанной окр              
float cOpokx0(float x1,float y1,float x2,float y2,float x3,float y3,float s)
{
 float x0;
x0=0.25*s*((x1*x1+y1*y1)*(y2-y3)-y1*((x2*x2+y2*y2)-(x3*x3+y3*y3))+(x2*x2+y2*y2)*y3-y2*(x3*x3+y3*y3));
 return x0;
}
 
//вычисляет y0 описанной окр
float cOpoky0(float x1,float y1,float x2,float y2,float x3,float y3,float s)
{
 float y0;
y0=-0.2-0.25*s*((x1*x1+y1*y1)*(x2-x3)-x1*((x2*x2+y2*y2)-(x3*x3+y3*y3))+(x2*x2+y2*y2)*x3-x2*(x3*x3+y3*y3));
 return y0;
}
 
//вычисляет x0 вписанной окр
float cVox0(float x1,float y1,float x2,float y2,float x3,float y3,float a,float b,float c)
{
 float x0;
x0=(((y2+y1*a/b)/(1+a/b)-y3)/((x2+x1*a/b)/(1+a/b)-x3)*x3-((y3+y1*a/c)/(1+a/c)-y2)/((x3+x1*a/c)/(1+a/c)-x2)*x2+y2-y3)/(((y3+y1*a/c)/(1+a/c)-y2)/((x3+x1*a/c)/(1+a/c)-x2)-((y3+y1*a/c)/(1+a/c)-y2)/((x3+x1*a/c)/(1+a/c)-x2));
 return x0;
}
 
//вычисляет y0 вписанной окр
float cVoy0(float x1,float y1,float x2,float y2,float x3,float y3,float x0,float a,float b)
{
 float y0;
y0=((y2+y1*a/b)/(1+a/b)-y3)/((x2+x1*a/b)/(1+a/b)-x3)*(x0-x3)+y3;
 return y0;
}
 
 
void main()
{
 float x1,y1,x2,y2,x3,y3,a,b,c,s,p,r,R,x0v,y0v,x0o,y0o;
 clrscr();
 printf("\nVvedite x1,y1: "); scanf("%f,%f",&x1,&y1);
 printf("\nVvedite x2,y2: "); scanf("%f,%f",&x2,&y2);
 printf("\nVvedite x3,y3: "); scanf("%f,%f",&x3,&y3);
   a=sqrt(pow((x2-x1),2)+pow((y2-y1),2));
   b=sqrt(pow((x3-x2),2)+pow((y3-y2),2));
   c=sqrt(pow((x1-x3),2)+pow((y1-y3),2));
  p=(a+b+c)/2;//полупериметр
  s=0.5*abs(x1*(y2-y3)-y1*(x2-x3)+x2*y3-y2*x3);//площадь
  r=s/p;//радиус вписанной
  R=(a*b*c)/(4*s);//радиус описанной окр
  x0v=cVox0(x1,y1,x2,y2,x3,y3,a,b,c);
  y0v=cVoy0(x1,y1,x2,y2,x3,y3,x0v,a,b);
  x0o=cOpokx0(x1,y1,x2,y2,x3,y3,s);
  y0o=cOpoky0(x1,y1,x2,y2,x3,y3,s);
  printf("Centr vpisannoi okr (%5.2f,%5.2f), radius: %5.2f",x0v,y0v,r);
  printf("Centr opisannoi okr (%5.2f,%5.2f), radius: %5.2f",x0o,y0o,R);
getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2009, 01:40     Окружности и треугольник!
Посмотрите здесь:

Лежит ли треугольник внутри окружности радиуса R - C++
Спасите пожалуйста... очень нужна эта прога... знаю, что самое элементарное, но все же... само задание: Заданы координаты вершин...

Рассчитать радиус окружности, вписанной в треугольник и описанной - C++
Рассчитать радиус окружности, вписанной в треугольник и описанной вокруг треугольника, зная его стороны.

Треугольник задан величинами своих углов и радиусом вписанной окружности. Найти стороны треугольника. - C++
Треугольник задан величинами своих углов и радиусом вписанной окружности. Найти стороны треугольника. help!!)

Два треугольника заданы координатами своих вершин. Найти сумму длин вписанных в них окружностей. Вычисления длины окружности, вписанной в треугольник - C++
Два треугольника заданы координатами своих вершин. Найти сумму длин вписанных в них окружностей. Вычисления длины окружности, вписанной в...

Окружности - C++
помогите пож-та: надо составить три окружности разных цветов да еще чтобы они последовательно были соединены(как ауди )) Не...

Непересекающиеся окружности - C++
Окружность на плоскости однозначно может быть определена координатами ее центра (x,y) и радиусом r. Пусть заданы соответствующие...

Рисование окружности - C++
Доброго времени суток. Подскажите пожалуйста алгоритмы которые позволяют нарисовать &quot;гладкую&quot; окружность. Нужно что бы получилось...

две окружности - C++
На плоскости даны две окружности. Ваша задача – найти все их общие точки. Формат входных данных В первой строке входного файла...

Круги в окружности - C++
Описать переменную круг, в которой содержатся все данные для построения круга в декартовой системе координат. а) Определить координаты...

найдите длину окружности - C++
Составьте программу для решения задачи: найдите длину окружности, которая проходит че¬рез точку А(x1„ у1) и центр которой находится в точке...

Пересечение прямой и окружности - C++
На плоскости заданы множество точек А и множество окружностей В. Найдите две такие различные точки из А, что проходящая через них прямая...

Движение точки по окружности - C++
Как задать правильно? Создать класс, в котором реализованы следующие метод: Okr(x0,y0,r) – задает движение точки по окружности . Создать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ch3r3p0sha
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 11
24.11.2009, 04:31  [ТС]     Окружности и треугольник! #2
Как посчитать координаты центра описанной вокруг треугольника окружности, если известны координаты вершин треугольника, радиусы описанной и вписанной окружностей???
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
24.11.2009, 07:18     Окружности и треугольник! #3
уравнение окружности (x - x0)^2 + (y - y0)^2 = r^2
x0, y0 - координаты центра
x, y - координаты точки

известно три точки, составляй три уравнения
потом скобки раскроешь и составишь две системы, в каждой вычтешь одно уравнение из другого, получится что-то вроде 2x0 - y0 = 0 в каждой системе
из них снова систему
Ch3r3p0sha
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 11
26.11.2009, 01:45  [ТС]     Окружности и треугольник! #4
Спасиба, всё сделал, ток по-другому
mdimochka
0 / 0 / 0
Регистрация: 26.11.2009
Сообщений: 3
26.11.2009, 04:15     Окружности и треугольник! #5
Ch3r3p0sha, если не трудно выложи рабочий код программы! Очень нужно!
Ch3r3p0sha
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 11
08.12.2009, 02:42  [ТС]     Окружности и треугольник! #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdio.h>
#include <math.h>
#include <conio.h>
//асцисса центра описанной окружности            
float cOpokx0(float x1,float y1,float x2,float y2,float x3,float y3,float s)
{
 float x0;
x0=((x1*x1+y1*y1)*(y2-y3)-y1*(x2*x2+y2*y2-x3*x3-y3*y3)+y3*(x2*x2+y2*y2)-y2*(x3*x3+y3*y3))/(4*s);
 return x0;
}
//ордината центра описанной окружности
float cOpoky0(float x1,float y1,float x2,float y2,float x3,float y3,float s)
{
 float y0,t=-4;
y0=((x1*x1+y1*y1)*(x2-x3)-x1*(x2*x2+y2*y2-x3*x3-y3*y3)+x3*(x2*x2+y2*y2)-x2*(x3*x3-y3*y3))/(t*s);
 return y0;
}
void main()
{
 float x1,y1,x2,y2,x3,y3,a,b,c,s,p,r,R,x0v,y0v,x0o,y0o,cx,cy,bx,by,K1,K2,Lb,Lc;
 clrscr();
 printf("\nVvedite x1,y1: "); scanf("%f,%f",&x1,&y1);
 printf("\nVvedite x2,y2: "); scanf("%f,%f",&x2,&y2);
 printf("\nVvedite x3,y3: "); scanf("%f,%f",&x3,&y3);
   c=sqrt(pow((x2-x1),2)+pow((y2-y1),2));//длины
   a=sqrt(pow((x3-x2),2)+pow((y3-y2),2));//сторон
   b=sqrt(pow((x1-x3),2)+pow((y1-y3),2));//треугольника
  p=(a+b+c)/2;//полупериметрф
  s=0.5*abs(x1*(y2-y3)-y1*(x2-x3)+x2*y3-y2*x3);//площадь треуг
   r=s/p;//радиус вписанной окр
    R=(a*b*c)/(4*s);//радиус описанной окр
     Lb=a/c;
     Lc=a/b;
     cx=(x2+c*x1)/(1+Lc);
     cy=(y2+Lc*y1)/(1+Lc);
     bx=(x3+Lb*x1)/(1+Lb);
     by=(y3+Lb*y1)/(1+Lb);
     K1=(cy-y3)/(cx-x3);
     K2=(by-y2)/(bx-x2);
     x0v=(K1*x3-K2*x2+y2-y3)/(K1-K2);//координаты центра
     y0v=K1*(x0v-x3)+y3;             //вписанной окр
   x0o=cOpokx0(x1,y1,x2,y2,x3,y3,s);//координаты центра
   y0o=cOpoky0(x1,y1,x2,y2,x3,y3,s);//описанной окр
  printf("\nCentr vpisannoi okr (%5.2f,%5.2f), radius: %5.2f",x0v,y0v,r);
  printf("\nCentr opisannoi okr (%5.2f,%5.2f), radius: %5.2f",x0o,y0o,R);
  }
getch();
}
Yandex
Объявления
08.12.2009, 02:42     Окружности и треугольник!
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru