2017-01-31 7 views
0

Я делаю проект для класса, где мне нужно найти 5 точек Лагранжа из 2 тел в пространстве. Предполагается, что этот проект будет упражнением в поиске корней, но у меня возникли проблемы с составлением плана для grid-части этого проекта.Как создать сетку в C++, которая позволит мне установить каждый индекс в качестве вектора для последующего манипулирования этим вектором, а затем построить его?

Я не знаю, какой лучший подход для построения какой-либо сетки, а затем каждая ячейка в этой сетке содержит 2 точки данных, направление и величину x и направление и величину y.

Затем я хочу использовать эти значения и построить из него вектор. т. е. если в (x, y) = (- 5,0) была ячейка со значениями (0, -2), то она была бы слева от начала координат 5 пробелов и направлена ​​вниз на 2 пробела.

Я не ищу, чтобы кто-то написал мой код здесь Мне просто нужна помощь в том, как я буду заниматься этим.

+0

'struct Vector {float x, y; } struct Cell {Векторное направление, величина; } Сотовая сетка [ширина] [высота]; ' – David

ответ

0

Один из способов - использовать std::pair<int, int> для представления точки.

По умолчанию std::pair operator = должен правильно обрабатывать сравнение для int.

Говорите, что каждый пункт имеет необработанное значение в двойном размере. Код может выглядеть так:

typedef std::pair<int, int> Point; 
std::map<Point, double> raw_data; 
for (int row = -5; row <= 5; ++row) { 
    for (int col = -5; col <= 5; ++col) { 
     raw_data.emplace(Point(row, col), 10000000); 
    } 
} 

std::cout << raw_data.at(Point(3, 2)) << std::endl;