我想按连续顺序对元组列表进行排序,因此每个元组的第一个元素等于前一个元素的最后一个元素.
例如:
input = [(10, 7), (4, 9), (13, 4), (7, 13), (9, 10)]
output = [(10, 7), (7, 13), (13, 4), (4, 9), (9, 10)]
Run Code Online (Sandbox Code Playgroud)
我开发了这样的搜索:
output=[]
given = [(10, 7), (4, 9), (13, 4), (7, 13), (9, 10)]
t = given[0][0]
for i in range(len(given)):
# search tuples starting with element t
output += [e for e in given if e[0] == t]
t = output[-1][-1] # Get the next element to search
print(output)
Run Code Online (Sandbox Code Playgroud)
是否有一种pythonic方式来实现这样的秩序?还有一种"就地"(只有一个列表)的方法吗?
在我的问题中,输入可以使用所有元组以循环方式重新排序,因此选择的第一个元素并不重要.
是否有一种"干净"的方式来获取python3中字典键的类型?
例如,我想确定这个词典中的一个是否具有类型的键str:
d1 = { 1:'one', 2:'two', 5:'five' }
d2 = { '1':'one', '2':'two', '5':'five' }
Run Code Online (Sandbox Code Playgroud)
有几种方法可以实现这一点,例如,使用一些方法:
isinstance(list(d2.keys())[0], type('str'))
Run Code Online (Sandbox Code Playgroud)
但这很烦人,因为d2.keys()它不可索引,所以你需要将它转换为一个列表,只是为了提取一个键的值.
那python3有什么作用get_key_type(d2)吗?如果没有,是否有更好(更清洁)的方式来询问字典的键是否类型str?
我正在尝试用顶点编写一个obj文件.我在我的代码中计算顶点法线并写入此文件.当我尝试在Meshlab中渲染这个文件时,它正确地读取顶点,但是当我转到'Render-> Show vertex normals'时,它没有显示我计算的法线.相反,MeshLab会计算自己的法线并显示它们.
我不确定如何可视化我计算/写入文件的法线.我想稍后根据我的计算法线应用Meshlab着色器.
为了测试这个,我创建了一个测试obj文件 -
vn 0.517350 0.517350 0.517350
v 0.500000 0.500000 0.500000
vn -0.333333 0.666667 0.666667
v -0.500000 0.500000 0.500000
vn 0.666667 -0.333333 0.666667
v 0.500000 -0.500000 0.500000
vn -0.666667 -0.666667 0.333333
v -0.500000 -0.500000 0.500000
f 1//1 2//2 3//3
f 4//4 3//3 2//2
Run Code Online (Sandbox Code Playgroud)
这只是一个方格.现在,如果我更改此文件中的正常值,当我选择"渲染 - >显示顶点法线"时,它仍会显示自己的顶点法线.我如何拥有自己的法线并应用适用于我的计算法线的着色器?请帮忙.
谢谢!!
是不是 2020.12(Windows 64 位)缺少 meshlabserver.exe?
或者我错过了什么?
我已经重新安装了 MeshLab,但仍然找不到服务器。
如果我在 MeshLab 中加载了一个 STL 文件,并在加载的网格旁边创建了一个新网格,如何将它们全部导出为 STL 文件?现在,如果我将在查看器中看到的内容导出为 STL,我只会导出一个网格,而不是在查看器中看到的两个网格。我缺少什么?
使用 MeshLab 中的过滤器 Sampling->Hausdorff Distance 我计算了网格和目标网格之间的距离。
如何保存点到点距离并将其呈现在热图上或将其绘制在直方图上?
作为我硕士论文的一部分,我需要检查不同 3D 扫描对象的曲率,我对网格实验室和网格总体来说是新手,所以我发现它很难理解。
我的网格是不规则的,因为它们是 3D 扫描的。因此,顶点的“分布”也是不规则的。这会影响我的曲率计算吗?我认为确实如此,因为所有曲率计算方法都使用邻居顶点,但我不确定。当不同网格的顶点不以相同方式均匀分布时,我可以公平地比较不同网格的曲率吗?
我的解决方案是以相同的方式对所有网格重新采样,然后进行表面重建并计算曲率?
或者我是否看到了不存在的问题,我可以只使用曲率计算吗?(我想我会选择伪逆)
我使用的是meshlab 2016.12
感谢您的帮助!
巴斯
我有一批三角形网格,每个网格都有不同的顶点和面。我想将所有网格的顶点数减少到相同的数字 10000。
我知道我可以使用simplification_quadric_edge_collapse_decimation来减少面数,这意味着顶点数将相应减少。但问题是我必须多次使用该方法才能使顶点数精确到 10000。
因此,我想知道是否有另一种方法可以将顶点数直接减少到10000?
meshlab ×6
mesh ×2
python ×2
python-3.x ×2
3d ×1
dictionary ×1
distribution ×1
graphics ×1
list ×1
normals ×1
pymeshlab ×1
types ×1