0 / 0 / 0
Регистрация: 04.07.2014
Сообщений: 14
1

Вычисление площади всех возможных треугольников n-мерного пространства

13.10.2014, 09:35. Показов 1879. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Никак не могу дойти до алгоритма решения данной задачи:
Допустим фиксируем n-мерное пространство, т.е. берем двухмерное или трехмерное и т.д.
Далее генерируем некоторого количество точек, к примеру около 10.
Как теперь определить все возможные треугольники в этом пространстве и посчитать их площади?

Сама задача в оригинале звучит вот так:
Составить алгоритм, вычисляющий площади всех возможных треугольников на множестве точек n-мерного пространства.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.10.2014, 09:35
Ответы с готовыми решениями:

Множество всех векторов n-мерного пространства
Здравствуйте, хочу спросить может ли кто-нибудь описать кратко алгоритм решения задачи, "Образует...

Вычислить и сравнить площади двух треугольников. Оформить вычисление площади в виде процедуры
1. вычеслить площади двух треугольников и сравнить их. оформит вычисление площади треугольника по...

Нахождение всех возможных треугольников на плоскости
Здравствуйте. Прошу помочь с решением задачи о нахождении всех возможных треугольников на...

Являются ли все векторы n-мерного пространства линейным подпространством соотв. векторного пространства?
Итак, необходимо определить являются ли все векторы n-мерного пространства, координаты которых -...

4
475 / 278 / 89
Регистрация: 15.11.2013
Сообщений: 526
13.10.2014, 13:08 2
Три вложенных цикла, которые перебирают все возможные тройки точек. Для каждой тройки определяем, лежат ли они на одной прямой. Если нет, то тройка точек даёт треугольник. Площади находим по формуле Герона исходя из длин сторон треугольников..
1
0 / 0 / 0
Регистрация: 04.07.2014
Сообщений: 14
16.10.2014, 20:30  [ТС] 3
Так как же мне проверить, если я изначально не знаю размерность пространства?
0
3959 / 2870 / 668
Регистрация: 08.06.2007
Сообщений: 9,684
Записей в блоге: 4
16.10.2014, 21:51 4
Цитата Сообщение от spk57 Посмотреть сообщение
Так как же мне проверить, если я изначально не знаю размерность пространства?
Вы же написали, что сначала вы "фиксируете размерность пространства", потом генерируете точки и т. д. А проверку можно и не делать. Вычисляете площадь. Если она равна нулю, то точки лежат на одной прямой.
0
0 / 0 / 0
Регистрация: 04.07.2014
Сообщений: 14
17.10.2014, 01:43  [ТС] 5
Да-да, я тогда ступил
Может кому-нибудь пригодится мой алгоритм на с++:
Кликните здесь для просмотра всего текста

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
vector<shared_ptr<vector<int>>> points;
map<vector<int>, unsigned long int> triangles;
 
int dimension = points[1]->size();
int countOfPoints = points.size();
 
for (int i = 0; i < countOfPoints; i++)
    {
        for (int j = 0; j < countOfPoints; j++)
        {
            for (int k = 0; k < countOfPoints; k++)
            {
                //считаем стороны через норму Евклида, т.е. разность векторов.
                //вектор находим через квадратный корень из суммы квадратов координат
                double i_k = 0, j_k = 0, i_j = 0;
                for (int a = 0; a < dimension; a++)
                {
                    i_k += pow((*points[k].get())[a] - (*points[i].get())[a], 2.0);
                    j_k += pow((*points[k].get())[a] - (*points[j].get())[a], 2.0);
                    i_j += pow((*points[j].get())[a] - (*points[i].get())[a], 2.0);
                }
                if (i_k == 0 || j_k == 0 || i_j == 0)
                    //случий, когда два ребра лежат на одной прямой
                {
                    continue;
                }
                i_k = sqrt(i_k);
                j_k = sqrt(j_k);
                i_j = sqrt(i_j);
 
                /*Используем формулу Герона для подсчета площади*/
                int p = (i_k + j_k + i_j) / 2;//полупериметр
                unsigned long int area = sqrt(p*(p - i_k)*(p - j_k)*(p - i_j));//непосредственно площадь
 
                if (area != 0)
                {
                    triangles[{(int)i_k, (int)j_k, (int)i_j}] = area;
                    //благодаря свойству уникальности ключа, треугольники с одинаковыми сторонами не будут добавляться
                }
            }
        }
    }
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2014, 01:43
Помогаю со студенческими работами здесь

По данным массивам подсчитать площади всех треугольников
помогите решить задачу с одномерным массивом в паскале ПОЖАЛУЙСТА,нужна срочно к 03.11.2012 до 10...

Вычислить и вывести на экран площади всех возможных параллелепипедов, которые можно построить по этим данным.
Кто нить помогите сделать задачку Условие: Длины ребер параллелепипеда могут принимать значения...

Программа поиска целочисленных сторон a, b, c всех треугольников, площади которых численно равны их периметрам
Задача. Составьте программу поиска целочисленных сторон a, b, c всех треугольников, площади...

Вычислить площади двух треугольников, и определить, какой из треугольников имеет большую площадь
Два треугольника заданные координатами своих вершин a, b, c. Вычислить площади треугольников,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru