4

对于 3d 成像软件,我正在编码:

我需要定义一个椭球 E,它可以在空间中具有任何半径、中心和旋转 替代文字

用户界面允许用户控制 3 个椭圆,它们是椭圆的“切片”(图像中的红色、绿色、蓝色),并且(根据定义)平行于主要笛卡尔平面(xy、yz.xz)

这 3 个椭圆是整个椭圆的一部分,并定义了整个椭圆 替代文字

每个切片都可以在空间中拖动、调整大小或旋转,并且每个切片都是完全定义的:它是中心在空间中的 3d 位置,它是 2 个半径,它是与轴平面的距离。

显然,每次更改都会影响椭圆体 E 和其他 2 个派生椭圆的参数。

我需要根据对切片所做的更改重新计算椭球 E 的方程

(椭圆体的首选方程类型应该可以很容易地推导出 XY 椭圆切割(变量 z))

有任何想法吗?提前感谢萨尔

4

3 回答 3

2

我认为这个问题的关键是以矩阵形式重写初始椭圆方程: x T Ax,其中x = {x,y,z} 和A是正定的。服用

椭球矩阵。

我们可以通过相似变换来更新A。因此,更新后的矩阵为A' = U T AU,其中U正交矩阵U T是其转置。然后A'用于更新其他视图。

从围绕三个轴的旋转矩阵开始

围绕三个轴的旋转矩阵。

我们可以很清楚地看到,围绕轴的旋转将影响A中的 8 个项。由于A是对称的,因此减少到仅更改 6 项中的 5 项。缩放/拉伸也很容易完成。

我们首先假设拉伸沿 x 轴(或任何适当的轴),因此S是一个对角矩阵,其对角线为 {sqrt( s ), 1, 1},其中 s 是应用的拉伸量。然后将缩放矩阵旋转到正确的应用方向,即R Theta SR Theta T,其中 Theta 是正 x 轴与顺时针方向的拉伸方向之间的角度。注意这里旋转的相反顺序,因为R Theta T可以被认为是旋转坐标,使得S拉伸 x 轴和R Theta将它们旋转回来。例如,如果 xy 平面沿 x = y 重新缩放因子 s,则

缩放矩阵

S以与旋转相同的方式应用于A,而且,很容易看到除了 zz 项之外的所有项都直接受到缩放操作的影响。

于 2010-12-02T16:39:47.533 回答
1

这里有一个棘手情况的例子:

一个真正的椭球体和一个球体,其与三个坐标平面的交点是点。在此示例中,您无法决定应该映射哪个二次曲线。

替代文字

替代文字

这些表面的方程是:

 (-1 + x)^2 + (-1 + y)^2 + (-1 + z)^2 == 1  

1/8 (12 + 3 x^2 + 3 y^2 - 2 y (2 + z) - 2 x (2 + y + z) + z (-4 + 3 z)) == 1

因此,由于您的解决方案不是唯一定义的,因此您无法根据三个交点重建椭圆体。我认为您问题的其他答案不考虑翻译。

于 2010-12-05T04:11:32.510 回答
0

如果在给定的实例中,3 个椭圆代表 E 的“笛卡尔”切割,则对其中任何一个(平移、缩放、旋转)的单个修改重新定义了一个独特的椭圆体。幸运的是,这件事有一只鼠标(或单一识别的击键)或一个头脑..

于 2010-11-28T12:17:36.230 回答