LoginSignup
0
0

More than 5 years have passed since last update.

geometry + Python > 四面体結合体 > 隠面の「頂点インデックス組合せ」を見つける > v0.1

Last updated at Posted at 2017-11-12
動作環境
GeForce GTX 1070 (8GB)
ASRock Z170M Pro4S [Intel Z170chipset]
Ubuntu 16.04 LTS desktop amd64
TensorFlow v1.2.1
cuDNN v5.1 for Linux
CUDA v8.0
Python 3.5.2
IPython 6.0.0 -- An enhanced Interactive Python.
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
scipy v0.19.1
geopandas v0.3.0
MATLAB R2017b (Home Edition)

背景

MATLAB > freeBoundary()を試してみた > tetmeshを処理してみた > 疑問点

MATLABにはfreeBoundary()というAPIがある。Numpyのビルトインにはない。
作るしかない(泥縄式開発方式: DDD[Doronawa Driven Development])

テストデータ

MATLAB > 四面体メッシュプロット > tetramesh() | view(30,30) | サブセット表示 tetramesh(tet(2:3,:),X)

上記にて隠面ありの四面体結合体の情報が得られている。

問題の整理

  • 三角形の座標が与えられる
  • 三角形の座標のインデックスの組合せが与えられる
  • 隠面となる三角形のインデックス組合せを求めよ

上記の例の三角形のインデックス(以下)を用いる。

MATLABコード。

>> load tetmesh
>> tet(2:3,:)

ans =

        1092         856        1094        1095
        1092        1095         896         856

解き方 (案)

思いついたのが以下。

異なる2つの四面体において、インデックスが3つ重なっていれば隠面である。

code v0.1

Python3コード。

alist = [ 1092, 856, 1094, 1095 ]
blist = [ 1092, 1095, 896, 856 ]
#print(alist)
#print(blist)

overlap = []
for elem in alist:
    if elem in blist:
        overlap += [ elem ]
print(overlap)
run
Success #stdin #stdout 0.02s 27704KB
[1092, 856, 1095]
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0