问题描述
我正在python中解决此问题,该问题在于获取骑士四面体网格的总体积。
我编写的这段代码获取的是网格的第一个四面体的体积值,但问题是我不知道如何放置它,以便读取所有四面体并添加每个四面体一。我知道它带有for循环,但我不知道将它放在哪里。
为了更好地理解,此处附有一张“ tets”和“ pts”矩阵的照片,“ tets”矩阵的思想是存储“ pts”行,其中每四个点的坐标被发现组成一个四面体。
这是代码:
<div>
<div class="d-flex">
<div class="bg-primary text-left" id="sidebar-container">
<div class="logo p-3 d-flex justify-content-between align-items-center">
<h4 class="text-white" id="logo-name">Company Name</h4>
<div class="i fas fa-chevron-circle-left left" id="left" onClick="smallNav()"></div>
</div>
<div class="menu d-flex flex-column">
<router-link class="nav-link mt-4 d-flex py-3" :to="{name: 'Home'}" exact="true">
<div class="d-flex align-items-center"> <i class="fas fa-home mr-3 menuicon"> </i><span class="menu-title">Home</span></div>
</router-link>
<router-link class="nav-link text-white py-3" :to="{name: 'About'}">
<div class="d-flex align-items-center"> <i class="fas fa-home mr-3 menuicon"></i><span class="menu-title">Plan</span> </div>
</router-link>
</div>
</div>
<div class="w-100">
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid pl-0 pr-0">
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button>
<form class="form-inline my-2 position-relative d-inline-block">
<input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search" />
<button class="btn position-absolute btn-search" type="submit"><i class="fas fa-search"> </i></button>
</form>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav ml-auto">
<li class="nav-item dropdown"><a class="nav-link dropdown-toggle d-flex align-items-center" id="navbarDropdown" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><img class="avatar mr-2 img-fluid" src="https://www.kindpng.com/picc/m/464-4644512_circle-avatar-picture-png-transparent-png.png" />Jan Kowalski</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown"><a class="dropdown-item" href="#">Mój profil</a><a class="dropdown-item" href="#">Subskrypcja</a>
<div class="dropdown-divider"></div><a class="dropdown-item" href="#">Wyloguj</a>
</div>
</li>
<div class="d-none" id="mobile">
<li class="nav-item"></li>Home
<li class="nav-item"></li>About
<li class="nav-item"></li>About
</div>
</ul>
</div>
</div>
</nav>
</div>
</div>
</div>
解决方法
制定程序来计算单个四面体的体积
def tetra_vol(nodes):
M = np.array( [ 1,*pts[node]] for node in nodes)
return abs(np.linalg.det(M))/6
随时用您使用的计算完全相同的行列式值的单个步骤替换它。您采用的操作是行操作,可用于将4x4行列式简化为3x3行列式,并且其中使用了显式公式。
然后计算所有四面体的总和
Vol = sum(tetra_vol(tet) for tet in tets)