Удаление почти параллельных граней из выпуклой оболочки (scipy.spatial.ConvexHull) - PullRequest
0 голосов
/ 06 января 2020

I sh, чтобы найти грани выпуклой оболочки, образованной набором точек. Для этого я использую scipy.spatial.ConvexHull. Код идет так, как показано ниже. Сначала я читаю координаты из файла, а затем генерирую выпуклую оболочку. Для дальнейшего анализа мне нужны фазовые уравнения, и вот в чем проблема.

from scipy.spatial import ConvexHull

# Reading coordinates from a file #
coords = ReadCoordsFromFile('input.txt') # Not giving the actual code here for brevity purposes

# Generating the Convex Hull
hull = ConvexHull(coords)
facet_eqns = hull.equations

В большинстве случаев уравнения в фасете повторяются, и я их фильтрую. Но иногда, уравнение аспекта становится почти подобным, отличаясь очень маленьким количеством. Это добавляет дополнительные ненужные грани к корпусу.

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

Заранее спасибо!

Воспроизводимый пример -
ordins = `

[[-6.60254550e-03 -7.69353045e-04 -1.98149963e-03]
 [ 5.06220108e-04  3.35012920e-03 -5.06675385e-03]
 [-7.74151410e-03  1.75719365e-03  1.57460691e-04]
 [ 6.03569807e-04 -5.75604405e-03 -4.05978234e-03]
 [ 2.82378489e-03 -6.77887230e-03 -2.06446124e-03]
 [ 3.25570167e-03 -7.42129666e-04 -5.60860572e-03]
 [ 2.97485293e-03  7.68755908e-03 -1.00624649e-03]
 [ 1.27972094e-03 -6.68584615e-03 -3.06184361e-03]
 [ 6.02235935e-04 -2.09525617e-03  6.90553336e-03]
 [-4.38951446e-03 -4.25464498e-03  3.35771375e-03]
 [-6.18277723e-03  2.03346003e-03 -2.45627057e-03]
 [ 8.49286010e-03 -7.61449715e-04  2.88487626e-03]
 [ 3.73787630e-03  7.24595326e-03 -1.52092953e-03]
 [ 3.61661606e-03  7.74554087e-03 -4.41399460e-04]
 [-4.42926277e-03 -4.45049336e-03  3.01770051e-03]
 [-5.01554440e-03 -3.91183169e-03  2.84478883e-03]
 [ 7.51008512e-03 -3.98009766e-04 -3.23933077e-03]
 [ 8.05231830e-03 -1.22404083e-03 -2.38878456e-03]
 [ 6.23938000e-03 -3.27222428e-03  4.60680728e-03]
 [ 1.11818929e-03 -7.05549069e-03 -1.77127887e-03]
 [ 4.41826702e-03  6.98720881e-03  2.68811939e-03]
 [-6.73807857e-03  3.26980018e-03  7.52997924e-04]
 [-2.16800091e-04  4.16847999e-03  5.59880501e-03]
 [-6.92489159e-03  2.66864455e-03 -1.14865183e-03]
 [ 3.28796997e-03  7.28241775e-03 -1.73652049e-03]
 [-6.27371087e-03  3.76025385e-03 -1.44614204e-04]
 [-7.89803124e-03 -6.10276064e-04  2.97797889e-04]
 [ 2.69908556e-03 -6.91921797e-03 -1.60263538e-03]
 [-7.90259196e-03 -5.81947945e-04  2.33211036e-04]
 [-7.87863883e-03  1.95352899e-05  2.43746195e-04]
 [ 8.51287062e-03 -8.26837157e-04  2.77839125e-03]
 [ 8.46229697e-03 -8.82210683e-04  2.93165918e-03]]

`

facet_eqns =`

[[-0.99547754  0.03811927  0.08701373 -0.00786496]
 [-0.34820479  0.88669251  0.30418714 -0.00547474]
 [ 0.45730953 -0.47427934 -0.75228126 -0.00606009]
 [-0.34297532 -0.10686601 -0.93324573 -0.00419689]
 [ 0.40888081  0.23729795  0.88119587 -0.00583417]
 [-0.59972262 -0.74629313 -0.28875482 -0.00510633]
 [-0.34769023  0.88696245  0.30398867 -0.00547836]
 [-0.34819791  0.88671157  0.30413946 -0.00547477]
 [ 0.42309192  0.39238851 -0.81671567 -0.00566689]
 [ 0.42307202  0.39239261 -0.816724   -0.00566687]
 [-0.36571287  0.73847047 -0.56649401 -0.00515913]
 [-0.34828332  0.88663177  0.30427427 -0.00547499]
 [-0.34319279 -0.10667459 -0.93318768 -0.00419713]
 [-0.34309079 -0.10686259 -0.93320367 -0.00419663]
 [ 0.40889478  0.23731142  0.88118576 -0.00583417]
 [ 0.4089428   0.23742134  0.88113387 -0.00583432]
 [ 0.40938397  0.23763988  0.88087006 -0.00583709]
 [ 0.95427194 -0.13898203  0.26466781 -0.00897386]
 [ 0.73015397 -0.68325698 -0.00592294 -0.00676419]
 [-0.60216705  0.08665418  0.79365352 -0.0049394 ]
 [ 0.02171863 -0.86729384  0.49732253 -0.00526456]
 [ 0.02175743 -0.86742362  0.49709444 -0.00526418]
 [-0.60198967  0.08687909  0.79376348 -0.00493803]
 [-0.6018371   0.0869213   0.79387455 -0.00493756]
 [-0.60187033  0.08694516  0.79384674 -0.00493751]
 [-0.36641969  0.73880629 -0.56559869 -0.0051587 ]
 [-0.3663782   0.73814409 -0.56648946 -0.00515767]
 [-0.36623699  0.73846202 -0.56616633 -0.00515717]
 [-0.80962233  0.57782042 -0.1031273  -0.007267  ]
 [-0.86004166  0.04253309 -0.50844792 -0.00665323]
 [-0.85988325  0.04261124 -0.50870923 -0.00665264]
 [ 0.42314798  0.39241149 -0.81667559 -0.00566718]
 [ 0.25611795  0.88790448 -0.38213772 -0.00797226]
 [ 0.25546327  0.88773686 -0.38296447 -0.00796985]
 [ 0.45719969 -0.47471236 -0.75207487 -0.00606168]
 [-0.59972064 -0.7462729  -0.28881121 -0.00510629]
 [-0.59972633 -0.74623501 -0.28889726 -0.00510629]
 [-0.59972292 -0.74622397 -0.28893286 -0.00510633]
 [ 0.4573452  -0.4743339  -0.75222518 -0.0060602 ]
 [ 0.4573857  -0.47443248 -0.75213838 -0.00606044]
 [ 0.88299547  0.45540022 -0.11370858 -0.00682436]
 [ 0.72777617 -0.68570699 -0.01215629 -0.00672866]
 [ 0.72776167 -0.68572223 -0.01216451 -0.00672858]
 [ 0.88051699  0.46012283 -0.1139158  -0.00679911]
 [ 0.88047411  0.46017598 -0.11403245 -0.00679898]
 [ 0.88046824  0.46017968 -0.11406285 -0.006799  ]
 [ 0.88042561  0.46018815 -0.11435742 -0.00679935]
 [ 0.72759244 -0.68590501 -0.01198179 -0.00672896]
 [ 0.02175057 -0.86744916  0.49705016 -0.00526419]
 [ 0.02176358 -0.8674401   0.4970654  -0.00526413]
 [ 0.11049547 -0.95903305 -0.26085697 -0.00735205]
 [ 0.11107546 -0.95882163 -0.26138731 -0.00735301]
 [-0.60310366  0.08528014  0.79309096 -0.00494747]
 [-0.67718357 -0.60058965  0.42510526 -0.00695518]
 [-0.60263425 -0.74559404 -0.28446702 -0.00512993]
 [-0.60079346 -0.74606788 -0.28710614 -0.00511504]
 [-0.60208369  0.08692403  0.79368725 -0.00493876]
 [-0.8096951   0.57772511 -0.10309002 -0.00726721]
 [-0.86349445  0.04318886 -0.50250579 -0.00668152]
 [-0.86028382  0.04278931 -0.50801655 -0.0066551 ]]

`

Как видите, последние 2 аспекта почти одинаковы. Есть множество подсчетов таких случаев. Это увеличивает число граней до 60, в то время как есть только 18 граней.

...