如何找到两个凸包的交集?

2023-12-21

我有两个凸包。让我们假设它们被给出为scipy.spatial.ConvexHulls

import numpy as np


points1 = np.random.rand((10, 3))
points2 = np.random.rand((10, 3))
hull1 = ConvexHull(points1)
hull2 = ConvexHull(points2)

我想要凸包是这两个凸包的交集,但找不到内置方法来执行此操作。

我认为这可以通过使用手动完成scipy.spatial.HalfspaceIntersection通过使用由以下定义的半空格hull1切断hull2,但仍然遇到困难,并且不敢相信这还没有在某个地方实现。


请注意,如果不使用 scipy,我不介意。


我会尝试pycddlib https://pypi.org/project/pycddlib/,实现了多面体的双重描述。多面体的双重描述是:

  • V-描述:通过顶点描述
  • H-描述:线性不等式系统的描述(“H”代表“超平面”)

您可能有两个凸多面体的顶点。转换为 H 描述,然后组合两个线性不等式组,然后转换为 V 表示。


这是一个例子。

import numpy as np
import pyvista as pv
import cdd as pcdd
from scipy.spatial import ConvexHull

# take one cube
cube1 = pv.Cube()
# take the same cube but translate it 
cube2 = pv.Cube() 
cube2.translate((0.5, 0.5, 0.5))

# plot 
pltr = pv.Plotter(window_size=[512,512])
pltr.add_mesh(cube1)
pltr.add_mesh(cube2)
pltr.show()
# I don't know why, but there are duplicates in the PyVista cubes;
# here are the vertices of each cube, without duplicates
pts1 = cube1.points[0:8, :]
pts2 = cube2.points[0:8, :]

# make the V-representation of the first cube; you have to prepend
# with a column of ones
v1 = np.column_stack((np.ones(8), pts1))
mat = pcdd.Matrix(v1, number_type='fraction') # use fractions if possible
mat.rep_type = pcdd.RepType.GENERATOR
poly1 = pcdd.Polyhedron(mat)

# make the V-representation of the second cube; you have to prepend
# with a column of ones
v2 = np.column_stack((np.ones(8), pts2))
mat = pcdd.Matrix(v2, number_type='fraction')
mat.rep_type = pcdd.RepType.GENERATOR
poly2 = pcdd.Polyhedron(mat)

# H-representation of the first cube
h1 = poly1.get_inequalities()

# H-representation of the second cube
h2 = poly2.get_inequalities()

# join the two sets of linear inequalities; this will give the intersection
hintersection = np.vstack((h1, h2))

# make the V-representation of the intersection
mat = pcdd.Matrix(hintersection, number_type='fraction')
mat.rep_type = pcdd.RepType.INEQUALITY
polyintersection = pcdd.Polyhedron(mat)

# get the vertices; they are given in a matrix prepended by a column of ones
vintersection = polyintersection.get_generators()

# get rid of the column of ones
ptsintersection = np.array([
    vintersection[i][1:4] for i in range(8)    
])

# these are the vertices of the intersection; it remains to take
# the convex hull
ConvexHull(ptsintersection)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何找到两个凸包的交集? 的相关文章

  • Python 3.6 DateTime Strptime 返回错误,而 Python 3.7 运行良好

    我刚刚为日期数据创建了一个数据类型 它返回一个datetime datetime object 这是代码 import datetime class Date def new cls dateTime args kwargs return
  • 更改随机森林分类器的阈值

    我需要开发一个没有 或接近没有 假阴性值的模型 为此 我绘制了召回率 精度曲线 并确定阈值应设置为 0 11 我的问题是 如何定义模型训练时的阈值 稍后在评估时定义它是没有意义的 因为它不会反映新数据 X train X test y tr
  • Python 函数句柄 ala Matlab

    在 MATLAB 中可以创建function handles http www mathworks co uk help techdoc ref function handle html与类似的东西 myfun arglist body 这
  • 将 Poetry 与 PyEnv 一起使用并遇到 Python 版本问题

    我正在使用 WSL2 Ubuntu 我一直在学习使用 Fastapi 进行后端 API 开发的课程 我相信我的 Ubuntu 默认 python 是 3 8 我正在尝试使用 python 3 10 0 进行开发 我做了以下事情 pyenv安
  • 在Python中不断寻找用户输入

    我将如何编写一个始终寻找用户输入的 Python 程序 我想我希望有一个等于输入的变量 然后根据该变量的等于值会发生不同的情况 因此 如果变量是 w 那么它将执行某个命令并继续执行 直到收到另一个输入 例如 d 然后会发生不同的情况 但直到
  • 测试交互式Python程序

    我想知道python的哪些测试工具支持交互式程序的测试 例如 我有一个由以下人员启动的应用程序 python dummy program py gt gt Hi whats your name Joseph 我想要仪器Joseph所以我可以
  • 如何生成大型网站的图形站点地图[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想为我的网站生成图形站点地图 据我所知 有两个阶段 抓取网站并分析链接关系 提取树形结构 生成视觉上
  • 无法使用 Python 循环分页 API 响应

    所以 我对这个感到摸不着头脑 使用 HubSpot 的 API 我需要获取我客户的 门户 帐户 中所有公司的列表 遗憾的是 标准 API 调用一次只能返回 100 家公司 当它返回响应时 它包含两个参数 使分页响应成为可能 其中之一是 ha
  • 类型错误:translate() 只接受一个参数(给定 2 个参数)[重复]

    这个问题在这里已经有答案了 我的代码在 python 2 x 版本上运行良好 但是当我尝试在 python 3 x 版本上运行它时 出现错误 主题 需要缩写短信编码中的任何消息 Code def sms encoding data star
  • 如何计算查询集中每个项目的两个字段的总和

    假设我有以下模型结构 class SomeModel Model base price DecimalField commision DecimalField 我不想存储total price在我的数据库中为了数据一致性并希望将其计算为ba
  • 多个列表和大小的所有可能排列

    在 python 中使用以下命令很容易计算简单的排列itertools permutations https docs python org 3 library itertools html itertools permutations 你
  • Python:绘制甘特图的模块

    有没有一个好的Python绘图模块甘特图 http en wikipedia org wiki Gantt chart 我试过了开罗情节 http linil wordpress com 2008 09 16 cairoplot 11 但它
  • 如何在自定义 django 命令中抽象出命令代码

    我正在我的应用程序下编写自定义 django 命令management commands目录 目前我在该目录中有 6 个不同的文件 每个文件都有不同的命令来解决独特的需求 然而 有一些实用程序是它们所共有的 抽象出这些公共代码的最佳方法是什
  • 在 matplotlib 中将 3D 背景更改为黑色

    我在将 3D 图表的背景更改为黑色时遇到问题 这是我当前的代码 当我将facecolor设置为黑色时 它会将图表内部更改为灰色 这不是我想要的 fig plt figure fig set size inches 10 10 ax plt
  • 获取 python 模块的 2 个独立实例

    我正在与以非 OO 方式编写的 python 2 x API 进行交互 它使用模块全局范围来处理一些内部状态驱动的东西 在它不再是单例的情况下需要它 并且修改原始代码 不是我们的 不是一个选择 如果不使用单独解释器的子进程运行 有什么方法可
  • 从 python 文件调用 Julia 函数

    我能够创建一个 docker 环境 然后按照这个线程我有一个用 Julia 编写的高性能函数 如何从 Python 中使用它 https stackoverflow com questions 64241264 i have a high
  • 如何输入可变的默认参数

    Python 中处理可变默认参数的方法是将它们设置为无 https stackoverflow com a 366430 5049813 例如 def foo bar None bar if bar is None else bar ret
  • scikit-learn kmeans 聚类的初始质心

    如果我已经有一个可以作为初始质心的 numpy 数组 我该如何正确初始化 kmeans 算法 我正在使用 scikit learn Kmeans 类 这个帖子 具有选定初始中心的 k 均值 https stackoverflow com q
  • 跟踪白色背景中的白球(Python/OpenCV)

    我在 Python 3 中使用 OpenCV 来检测白场上的白 黑球 并给出它的精确 x y 半径 和颜色 我使用函数 cv2 Canny 和 cv2 findContours 来找到它 但问题是 cv2 Canny 并不总是检测到圆的完整
  • 如何从 python 中的字符串中删除 ANSI 转义序列

    这是包含我的字符串的片段 ls r n x1b 00m x1b 01 31mexamplefile zip x1b 00m r n x1b 01 31m 该字符串是从我执行的 SSH 命令返回的 我无法使用当前状态下的字符串 因为它包含 A

随机推荐

  • 如何调整表单大小以自动适应其内容?

    我正在尝试实现以下行为 表单上有一个选项卡控件 在该选项卡控件上有一个树视图 为了防止出现滚动条 我希望表单在第一次显示时根据树视图的内容更改其大小 如果树视图有太多节点无法在窗体的默认大小上显示 则窗体应更改其大小 以便树视图上没有垂直滚
  • 无法在列表框中绑定命令

    我的 WPF 使用 MVVM 方法 我正在尝试在列表控件中绑定 2 个控件
  • 我自己的 R 中的 K 均值算法

    我是 R 编程的初学者 我正在 R 中进行此练习作为编程入门 我已经在 R 中实现了自己的 K 均值实现 但在某一点上卡住了一段时间 我需要达成共识 算法迭代直到找到每个簇的最佳中心 这是没有迭代的原始算法 它只是从整个数据中随机选取一个数
  • 在ColdFusion中,有没有办法确定代码在哪个服务器上运行?

    ColdFusion 代码中是否有任何方法可以确定代码在哪个服务器上执行 我有一些负载平衡的 ColdFusion 服务器 当我捕获异常时 我希望能够知道代码正在哪个服务器上运行 因此我可以将该信息包含在日志记录 报告代码中 服务器是 Wi
  • 当您无法提供色彩美感时手动创建图例

    在试图回答时这个问题 https stackoverflow com questions 34066131 can data points be labeled in stripcharts 34068263 创建所需绘图的一种方法是使用g
  • 为什么在JPA Hibernate中更新查询;所有属性都在 SQL 中更新

    我将 JPA 与 Hibernate 一起使用 当我修改对象的一个 属性并更新它时 生成的 SQL 显示所有列都已更新 为什么它不只更新修改的列 有没有办法实现这一点 因为我觉得这样会更加优化 默认情况下 hibernate 包含更新查询中
  • 在 NetBeans 中找不到主类

    我一直在为我的编程课做作业 我正在使用 NetBeans 我完成了我的项目并且运行良好 当我尝试运行它时 收到一条消息 未找到主类 这是主要的一些代码 package luisrp3 import java io FileNotFoundE
  • 如何使用 Seaborn 在 hexbins 上绘制回归线?

    我终于成功地将我的 hexbin 分布图整理成几乎漂亮的东西 import seaborn as sns x req apply clicks y req reqs wordcount sns jointplot x y kind hex
  • 将 PySpark DenseVector 转换为数组

    我正在尝试将 DenseVector 的 pyspark 数据帧列转换为数组 但总是出现错误 data Vectors dense 8 0 1 0 3 0 2 0 5 0 Vectors dense 2 0 0 0 3 0 4 0 5 0
  • 通过计算雅可比行列式,有效地使用 PyTorch 的 autograd 和张量

    在我之前的question https stackoverflow com questions 67320792 how to use pytorchs autograd efficiently with tensors 67334809
  • jQuery 输入掩码

    嘿 我是 jQuery 新手 我想检查输入框上的 onblur 这种格式 cda 123 表示前 3 个字符空间和 3 个整数 通常我看到代码是写在输入 ID 上的 但如果我想写在类上 那么我该怎么做 例如我有 class InputMas
  • Python - 从多个 Zip 文件中提取 CSV 文件并合并数据

    我有一个 Python 脚本和 pandas 来组合多个 ZIP 文件 我在这里使用 GitHub 存储库中托管的数据 https github com statistikat coronaDAT https github com stat
  • 如何打包 C# 9 源生成器并将其上传到 Nuget?

    我做了一个C 9源代码生成器 你可以找到它here https github com HamedFathi MockableStaticGenerator 当我在另一个解决方案中使用整个项目并将其作为项目引用时 它可以工作 但是当我将其与当
  • 如何在 Amazon EC2 上部署 Eclipse Java Web 动态项目?

    我正在尝试创建一个能够与 Amazon RDS 通信的 Web 项目 我知道如何使用 JDBC 将 localhost 项目连接到 RDS 然而 问题是我从未尝试部署我的项目 这样 例如有人可以输入somePage com 然后转到我的网页
  • 使Python json编码器支持Python的新数据类

    从Python 3 7开始 有一个叫做数据类的东西 from dataclasses import dataclass dataclass class Foo x str 但是 以下情况会失败 gt gt gt import json gt
  • 如何在mui主题中插入字体

    在index css 文件中我有一个字体 我想完全避免这个文件 并将这个配置放在作为 MUI 库实现的一部分创建的 theme js 文件中 怎么做 索引 css font face font family ATTAleckSans W L
  • Java Native Access 不支持 C++,对吗?

    我在网上找到了许多关于用于 C 库的 JNA 的参考 包括 stackoverflow 上的一些 但我在 JNA 文档中找不到任何内容表明这是可能的 特别是 似乎没有任何方法可以包装 C 类 我需要本机访问才能使用 RTAudio 但 RT
  • ASMX 返回纯字符串

    我有一个 ASP NET Web 服务 asmx 我的服务定义如下 System Web Services WebService Namespace http tempuri org System Web Services WebServi
  • 用 Java 将数据发送到打印机

    然而 下面的代码将数据发送到打印机 当它到达打印机队列时 它会返回一个Unable to convert PostScript file 我认为可以通过指定口味来克服这个问题 但事实并非如此 import javax print Doc i
  • 如何找到两个凸包的交集?

    我有两个凸包 让我们假设它们被给出为scipy spatial ConvexHulls import numpy as np points1 np random rand 10 3 points2 np random rand 10 3 h