Matlab 给定一个曲面,找出被曲面切成两半的零件

Matlab 给定一个曲面,找出被曲面切成两半的零件,matlab,Matlab,假设我有一个曲面(S1),还有另一个曲面(S2)穿过它。如图所示,如何找到由二者相交形成的多面体 在上面的示例中,应该返回两个多面体,一个在S2上方,另一个在S1下方 但S1和S2是由3D坐标定义的。假设S1的坐标为(P1、P2、P3、P4),S2的坐标为P5、P6、P7、P8,交点为P9和P10。我想要一个返回两个多面体的程序: P1,P2,P9,P10,P5,P6 及 我知道可以获得两个曲面的交点并形成多面体,但如果我有一个内置的matlab函数,则最好找到这两个曲面的交点(假设它们是平面

假设我有一个曲面(
S1
),还有另一个曲面(
S2
)穿过它。如图所示,如何找到由二者相交形成的多面体

在上面的示例中,应该返回两个多面体,一个在
S2
上方,另一个在
S1
下方

但S1和S2是由3D坐标定义的。假设S1的坐标为(
P1、P2、P3、P4
),S2的坐标为
P5、P6、P7、P8
,交点为
P9
P10
。我想要一个返回两个多面体的程序:

P1,P2,P9,P10,P5,P6


我知道可以获得两个曲面的交点并形成多面体,但如果我有一个内置的matlab函数,则最好找到这两个曲面的交点(假设它们是平面,这是一个平行度测试,一个叉积,并求解线性方程以检查它们实际相交的位置)。然后你就有了构造两个多面体所需的所有点。你可能会想检查你是否将“正确”的端点和法线结合起来,但在上述情况下,每个多面体有6个点,其中2个点是平面交点的公共点。

找到两个曲面的交点(假设它们是平面,这是一个平行度测试,一个叉积,并求解线性方程以检查它们实际相交的位置)。然后你就有了构造两个多面体所需的所有点。你可能会想检查你是否将“正确”的端点和法线结合起来,但在上面的例子中,每个多面体有6个点,其中2个点是平面交点的公共点。

我不完全确定你打算怎么做定义你的多面体。你想通过体积、顶点、边、面来定义它,还是仅仅通过知道空间中的一个给定点(x、y、z)是否属于哪个多面体来定义它

如果您想要最后一个选项,那么启动一个函数来实现这一点应该不会太困难

鉴于您的X和Y坐标对于
S1
S2
都是公共的,一个简单的
if
语句应该足以区分这两个多面体

考虑以下示例:

[x,y] = meshgrid(-10:0.1:10,-10:0.1:10); % Creates x & y meshgrids for [-10,10]
S1 =  4.*x + 3.*y;
S2 = 12.*x + 6.*y - 12;
现在我们有了
S1
S2
,我们可以创建一个逻辑矩阵来区分这两者:

logical = S1 < S2;
logical=S1

此后,我不知道您想如何继续。

我不完全确定您打算如何定义您的多面体。您想通过体积、顶点、边、面来定义它,还是仅仅通过知道空间中的给定点(x、y、z)是否属于哪个多面体来定义它

如果您想要最后一个选项,那么启动一个函数来实现这一点应该不会太困难

鉴于您的X和Y坐标对于
S1
S2
都是公共的,一个简单的
if
语句应该足以区分这两个多面体

考虑以下示例:

[x,y] = meshgrid(-10:0.1:10,-10:0.1:10); % Creates x & y meshgrids for [-10,10]
S1 =  4.*x + 3.*y;
S2 = 12.*x + 6.*y - 12;
现在我们有了
S1
S2
,我们可以创建一个逻辑矩阵来区分这两者:

logical = S1 < S2;
logical=S1

此后,我不知道你想如何继续。

曲面是如何定义的?是象征性的还是作为x,y和z的矩阵?曲面是否共享公共的x和y坐标?@Zaid:是的,它们共享公共的x和y坐标?这是一个问题,但你能再次上传图片吗?曲面是如何定义的?是象征性的还是作为x,y和z的矩阵?曲面是否共享公共x&y坐标?@Zaid:是的,它们共享公共x&y坐标这是一个很难回答的问题,但是你能再次上传图片吗?我希望它由顶点定义。我希望它由顶点定义。