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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Ольга150883
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 38
#1

Площадь выпуклого многогранника методом триангуации по формуле Герона - C++

20.01.2010, 05:16. Просмотров 1462. Ответов 5
Метки нет (Все метки)

Разработать программу для расчета выпуклого многогранника методом триангуации (разбиения на треугольники) по формуле Герона (определение площади треугольника по его сторонам и полупериметру). Координаты вершин многогранника должны быть считаны из указанного пользователем файла. В этом файле первым может быть число, равное количеству вершин многогранника. Построить изображение многогранника с линиями разбиения на треугольники.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2010, 05:16     Площадь выпуклого многогранника методом триангуации по формуле Герона
Посмотрите здесь:

C++ Вычислить площадь треугольника по формуле Герона
C++ Нахождения площади треугольника по формуле Герона
вычислить площадь треугольника по формуле герона C++
вычислить площадь треугольника со сторонами a,b,c по формуле Герона C++
C++ Найти площадь треугольника по формуле Герона
Организовать класс треугольник определенный по 3-ем сторонам содержащий методы нахождения периметра и площади(По формуле герона) C++
C++ Найти площадь треугольника по формуле Герона
C++ Вычислить площадь выпуклого четырёхугольника ABCD
C++ Найти площадь треугольника по формуле Герона
C++ Рассчитать выпуклый многогранник методом триангуации
Площадь выпуклого многоугольника методом триангуляции C++
Посчитать площадь по формуле Герона C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Reskov
12 / 12 / 1
Регистрация: 14.12.2009
Сообщений: 33
20.01.2010, 15:34     Площадь выпуклого многогранника методом триангуации по формуле Герона #2
написал... смотри вложения и спрашивай если что-то не понятно
Вложения
Тип файла: rar square.rar (262.0 Кб, 103 просмотров)
Ольга150883
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 38
21.01.2010, 07:32  [ТС]     Площадь выпуклого многогранника методом триангуации по формуле Герона #3
Спасибо большое, все работает...
Reskov
12 / 12 / 1
Регистрация: 14.12.2009
Сообщений: 33
21.01.2010, 17:29     Площадь выпуклого многогранника методом триангуации по формуле Герона #4
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
59
60
61
62
63
64
65
66
67
68
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <math.h>
#include <fstream.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
TPoint *a;//список точек
int n=0;
 
//---------------------------------------------------------------------------
double dist(TPoint a,TPoint b)//растояние  между двумя точками
{
 
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
//---------------------------------------------------------------------------
double plGeron(TPoint a,TPoint b,TPoint c)//формула герона
{
double p=(dist(a,b)+dist(b,c)+dist(c,a))/2;
return  sqrt(p*(p-dist(a,b))*(p-dist(b,c))*(p-dist(c,a)));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  if (OpenDialog1->Execute())  //запускаем диалог для выбора файла
     if (FileExists(OpenDialog1->FileName)) { //если норм запустился то проверяем сущ файла
         Memo1->Lines->LoadFromFile(OpenDialog1->FileName); //загружаем в мемо для красоты
     }
 
 
 fstream stream(OpenDialog1->FileName.c_str());//открываем поток для работы с файлом
 stream>>n;//считываем n
 a=new TPoint[n+1];              //создаем массив на n+1 элемент чтобы замкнуть ломаную
  for (int i=0;i<n;i++)
        {
        stream>>a[i].x>>a[i].y; //читаем данные из файла
        }
  a[n]=a[0];  //замыкаем ломаную
 
  TCanvas *canv=Image1->Canvas; //канва где рисуем
  canv->Pen->Color=clBlack;
  Image1->Picture->Bitmap->FreeImage();    //стираем все что было
  canv->MoveTo(a[0].x,a[0].y);       //переходм в первую точку
  canv->Polygon(a,n+1);             //рисуем фигуру
  canv->Pen->Color=clRed;       //красный цвет
    for (int i=2;i<n-1;i++)     //рисуем триангуляцию
        {
         canv->MoveTo(a[0].x,a[0].y);
         canv->LineTo(a[i].x,a[i].y);
         }
  double pl=0;  //наша площадь
        for (int i=1;i<n-1;i++)
        {
         pl+=plGeron(a[0],a[i],a[i+1]);//фиксируем точку a[0] и по ней разбиваем
        }
        ShowMessage("pl="+(String)pl);
}
//---------------------------------------------------------------------------
Ольга150883
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 38
21.01.2010, 17:33  [ТС]     Площадь выпуклого многогранника методом триангуации по формуле Герона #5
дает ошибку(
Reskov
12 / 12 / 1
Регистрация: 14.12.2009
Сообщений: 33
21.01.2010, 17:37     Площадь выпуклого многогранника методом триангуации по формуле Герона #6
подробеней плз, что за ошибка??? это просто файл с коментариями.... его надо заменить в проекте Unit1.cpp
Yandex
Объявления
21.01.2010, 17:37     Площадь выпуклого многогранника методом триангуации по формуле Герона
Ответ Создать тему
Опции темы

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