У меня есть файл, заполненный 3d-пунктами. Точки образуют плоскость. Вот пример файла:Tessellate a plane of point
25
1 -1 0
1 -0.5 0
1 0 0
1 0.5 0
1 1 0
0.5 -1 0
0.5 -0.5 0
0.5 0 0
0.5 0.5 0
0.5 1 0
0 -1 0
0 -0.5 0
0 0 0
0 0.5 0
0 1 0
-0.5 -1 0
-0.5 -0.5 0
-0.5 0 0
-0.5 0.5 0
-0.5 1 0
-1 -1 0
-1 -0.5 0
-1 0 0
-1 0.5 0
-1 1 0
Редактировать: Поскольку мой пример набора точек был слишком простым, вот более сложный пример.
30
-0.298858 -0.816497 1.11536
0.0546949 -0.816497 0.761802
0.408248 -0.816497 0.408248
0.761802 -0.816497 0.0546949
1.11536 -0.816497 -0.298858
-0.462158 -0.489898 0.952056
-0.108604 -0.489898 0.598502
0.244949 -0.489898 0.244949
0.598502 -0.489898 -0.108604
0.952056 -0.489898 -0.462158
-0.625457 -0.163299 0.788756
-0.271904 -0.163299 0.435203
0.0816497 -0.163299 0.0816497
0.435203 -0.163299 -0.271904
0.788756 -0.163299 -0.625457
-0.788756 0.163299 0.625457
-0.435203 0.163299 0.271904
-0.0816497 0.163299 -0.0816497
0.271904 0.163299 -0.435203
0.625457 0.163299 -0.788756
-0.952056 0.489898 0.462158
-0.598502 0.489898 0.108604
-0.244949 0.489898 -0.244949
0.108604 0.489898 -0.598502
0.462158 0.489898 -0.952056
-1.11536 0.816497 0.298858
-0.761802 0.816497 -0.0546949
-0.408248 0.816497 -0.408248
-0.0546949 0.816497 -0.761802
0.298858 0.816497 -1.11536
Эти точки наносятся следующим образом:
Этот файл указывает, что существует 25 точек на плоскости, а также перечислены пункты. Точки находятся на регулярной основе. Основываясь на этой информации, как я мог бы сформировать треугольники из данных точек и хранить его в std::vector<Tri>
где Tri
является
struct Tri
{
double x1, y1, z1;
double x2, y2, z2;
double x3, y3, z3;
};
Обратите также внимание: Проблема ограничения: Внешние библиотеки не допускаются. Использование C++ 0X запрещено (компилятор: g ++ 4.5.2).
Вы хотите, чтобы точки, чтобы быть вершинами треугольников, или вы хотите, треугольники окружать точки? Могут ли треугольники пересекаться? Нужно ли им каким-то образом покрывать выпуклую оболочку очков? –
Точками должны быть вершины. Треугольники никогда не должны пересекаться. Если они это сделают, точечные данные будут искажены. – Drise
Почему ваш треугольник содержит только 3 двойных номера? обычно треугольник определяется тремя ** точками ** – PermanentGuest