鱼C论坛

 找回密码
 立即注册
查看: 2012|回复: 2

切片软件(解决必有重谢)

[复制链接]
发表于 2023-9-22 18:09:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
for triangle in mesh_data.vectors:
            above = np.any(triangle[:, 2] > z)
            below = np.any(triangle[:, 2] < z + layer_height)

            if above and below:
                indices = np.where((triangle[:, 2] > z) != (triangle[:, 2] < z + layer_height))[0]


                if len(indices) >= 2:
                    tri_vertices = triangle[indices][:, :2]
                    tri_vertices = (tri_vertices * scale_factor).astype(int)  # 使用缩放因子而不是固定的100

                    # 绘制轮廓
                    cv2.drawContours(canvas, [tri_vertices], -1, 255, thickness=cv2.FILLED)

        # 保存缩略图
        slices.append(canvas)

这是一个切片软件。
如果是above和below都是True的,那这一部分(triangle[:, 2] > z) != (triangle[:, 2] < z + layer_height)是不是矛盾了呢?

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-9-22 18:09:36 | 显示全部楼层
这一部分并不矛盾。在这段代码中,above和below分别表示三角形是否在z和z+layer_height之上或之下。如果above和below都是True,则说明三角形跨越了z和z+layer_height之间的平面。因此,(triangle[:, 2] > z) != (triangle[:, 2] < z + layer_height)的结果将是一个布尔数组,其中True表示三角形的一个点在z和z+layer_height之间,而False表示三角形的所有点都在z和z+layer_height之上或之下。通过使用np.where函数并选择布尔数组中的True值,可以获得三角形中跨越z和z+layer_height之间的边界线段的索引。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-22 18:23:55 | 显示全部楼层
isdkz 发表于 2023-9-22 18:09
这一部分并不矛盾。在这段代码中,above和below分别表示三角形是否在z和z+layer_height之上或之下。如果abo ...

但是如果if执行的话,不是就已经说明这个点在z和z+layer_height之间吗 为什么还有FALSE的情况出现
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 08:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表