Построение трехмерного тома с помощью питона с использованием вершин, нормалей и многоугольников (триангулированная поверхностная сетка) - PullRequest
0 голосов
/ 06 сентября 2018

Я работаю с данными, извлеченными из программного инструмента, который создает трехмерный том. Я признаю, что у меня ограниченный опыт работы с построением трехмерных данных.

Я могу построить облако точек вершин и увидеть проекцию объема, но не могу понять, как создать трехмерный объем на основе предоставленной информации.

Я нашел несколько ресурсов, но не могу понять, как включить мои данные.

https://plot.ly/matplotlib/trisurf/

https://plot.ly/python/surface-triangulation/

https://jakevdp.github.io/PythonDataScienceHandbook/04.12-three-dimensional-plotting.html

Данные экспортируются в формате xml, который содержит вершины, нормали и многоугольники.

Вот пример первых 20 строк для каждого набора данных.

Вершины:

   41.3746  -71.9483  99.2939 
   39.9933  -72.2932  91.6082 
   38.8267  -70.5162  101.5837 
   38.8114  -70.5493  99.3570 
   38.5727  -73.5902  92.0325 
   37.3125  -71.8751  100.6382 
   37.3807  -72.1649  91.0248 
   36.9158  -73.7528  93.2086 
   35.6580  -69.5154  100.8038 
   35.7263  -71.1415  101.1432 
   35.9080  -70.5831  97.7718 
   35.5319  -72.4994  91.4847 
   34.3521  -72.1859  99.8825 
   32.6906  -72.1007  99.6359 
   32.6198  -72.3278  92.4205 
   32.6685  -73.8458  93.3337 
   30.9771  -72.1165  99.3694 
   31.0271  -73.6257  93.2930 
   29.4589  -71.7870  99.1600 
   30.0208  -72.2815  92.6133

Нормалы: я предполагаю, что это векторы, которые указывают перпендикулярно поверхности от вершин треугольника, который я надеюсь создать.

   0.877852  0.284483  0.385287 
   0.644255  0.299658  -0.703662 
   0.294628  0.262932  0.918728 
   0.349551  0.805103  -0.479190 
   0.084823  -0.836902  -0.540740 
   -0.061349  -0.734605  0.675716 
   -0.127035  0.286592  -0.949593 
   -0.129635  -0.919106  -0.372075 
   -0.113247  0.513063  0.850847 
   -0.207400  -0.290761  0.934047 
   0.214917  0.860152  -0.462548 
   -0.374428  -0.181695  -0.909280 
   -0.111230  -0.679569  0.725131 
   -0.145622  -0.489935  0.859510 
   -0.123850  0.169284  -0.977755 
   0.016976  -0.863405  -0.504225 
   -0.188490  -0.405656  0.894380 
   -0.012185  -0.749568  -0.661815 
   -0.143628  -0.303794  0.941849 
   -0.099332  0.366513  -0.925095 

Полигоны: я не уверен, что эти данные пытаются мне сказать или как использовать эти данные для генерации поверхностей тома. Я думаю, что это степень треугольников, но я не уверен в единицах этих значений.

Редактировать Просто нашел дополнительную информацию в документации: Полигоны (треугольники) перечислены как тройки целых чисел (i, j, k), где каждое целое число индексирует соответствующую вершину в списке вершин, начиная с 1. Индексы вершин упорядочены в направлении против часовой стрелки, когда треугольник просматривается из вне поверхности.

  1649 1 4643
  11229 11230 11231
  11233 10615 1651
  11234 11235 11236
  11237 11238 11239
  11240 11241 11242
  1 11243 4648
  11244 11245 11246
  11247 11248 11249
  11250 4652 5907
  4648 6473 11252
  11254 11255 11256
  11257 11254 11258
  11259 39102 11261
  3051 1653 11260
  4654 42 11263
  6814 4654 5001
  11265 11266 11267
  11266 11268 11269
  11269 11237 11270

Спасибо за любую помощь.

...