Skip to main content

聚合超椭球(Poly-super-ellipsoid)

[This page is prepared in Chinese, and will be part of a book aiming at beginners of DEM.]

聚合超椭球(Poly-super-ellipsoid)

表达式(Formulation)

超椭球的表面可表示为 (Zhao & Zhao, 2019)

f(x,y,z)=(xrx2ϵ1+yry2ϵ1)ϵ1ϵ2+zrz2ϵ21=0(1)\begin{aligned} f(x, y, z) = \left( \left| \frac{x}{r_{x}} \right|^{\frac{2}{\epsilon_{1}}} + \left| \frac{y}{r_{y}} \right|^{\frac{2}{\epsilon_{1}}} \right)^{\frac{\epsilon_{1}}{\epsilon_{2}}} + \left| \frac{z}{r_{z}} \right|^{\frac{2}{\epsilon_{2}}} - 1 = 0 \tag{1} \end{aligned}

其中,rxr_{x},ryr_{y}rzr_{z} 分别为超椭球在 xx,yyzz 方向的半轴长(semi-principal axis length);ϵ1\epsilon_{1}ϵ2\epsilon_{2} 是表征超椭球球度或块度(blockness)的两个形状参数。当参数 ϵ1\epsilon_{1}ϵ2\epsilon_{2} 在 (0, 2) 区间内时,超椭球为凸型;否则为非凸型。对于聚合超椭球,半轴长参数 rxr_{x} 在负X轴象限取 rxr_{x^-},在正X轴象限取 rx+r_{x^+}ryr_{y}rzr_{z} 亦然。

支撑映射(Support mapping)

参考笛卡尔坐标系和球坐标系之间的坐标变换,超椭球的球坐标参数化可表示为(注,以第一象限为例,正负号已省略)

x=rx(sinθ)ϵ2(cosφ)ϵ1y=ry(sinθ)ϵ2(sinφ)ϵ1z=rz(cosθ)ϵ2\begin{aligned} x &= r_x (\sin\theta)^{\epsilon_2} (\cos\varphi)^{\epsilon_1} \\ y &= r_y (\sin\theta)^{\epsilon_2} (\sin\varphi)^{\epsilon_1} \\ z &= r_z (\cos\theta)^{\epsilon_2} \end{aligned}

其中,θ\thetaφ\varphi 分别为极角(polar angle)与方位角(azimuth angle)。把xx,yyzz分别对θ\thetaφ\varphi 求偏导,可得超椭球表面的方向向量为

xθ=ϵ2rx(sinθ)ϵ21(cosθ)(cosφ)ϵ1yθ=ϵ2ry(sinθ)ϵ21(cosθ)(sinφ)ϵ1zθ=ϵ2rz(cosθ)ϵ21(sinθ)\begin{aligned} x_\theta &= \epsilon_2 r_x (\sin\theta)^{\epsilon_2-1} (\cos\theta) (\cos\varphi)^{\epsilon_1} \\ y_\theta &= \epsilon_2 r_y (\sin\theta)^{\epsilon_2-1} (\cos\theta) (\sin\varphi)^{\epsilon_1} \\ z_\theta &= \epsilon_2 r_z (\cos\theta)^{\epsilon_2-1} (-\sin\theta) \end{aligned}

以及

xφ=ϵ1rx(sinθ)ϵ2(cosφ)ϵ11(sinφ)yφ=ϵ1ry(sinθ)ϵ2(sinφ)ϵ11(cosφ)zφ=0\begin{aligned} x_\varphi &= \epsilon_1 r_x (\sin\theta)^{\epsilon_2} (\cos\varphi)^{\epsilon_1-1} (-\sin\varphi) \\ y_\varphi &= \epsilon_1 r_y (\sin\theta)^{\epsilon_2} (\sin\varphi)^{\epsilon_1-1} (\cos\varphi) \\ z_\varphi &= 0 \end{aligned}

求两个方向向量的叉乘,并化简,可得到超椭球表面的法方向为(注,法方向各分量同时除于了 ϵ1ϵ2rxryrz(sinθ)2ϵ21(cosθ)ϵ21(sinφ)ϵ11(cosφ)ϵ11\epsilon_1 \epsilon_2 r_x r_y r_z (\sin\theta)^{2\epsilon_2-1} (\cos\theta)^{\epsilon_2-1} (\sin\varphi)^{\epsilon_1-1} (\cos\varphi)^{\epsilon_1-1}

nx=krx(sinθ)2ϵ2(cosφ)2ϵ1ny=kry(sinθ)2ϵ2(sinφ)2ϵ1nz=krz(cosθ)2ϵ2\begin{aligned} n_x &= \frac{k}{r_x} (\sin\theta)^{2-\epsilon_2} (\cos\varphi)^{2-\epsilon_1} \\ n_y &= \frac{k}{r_y} (\sin\theta)^{2-\epsilon_2} (\sin\varphi)^{2-\epsilon_1} \\ n_z &= \frac{k}{r_z} (\cos\theta)^{2-\epsilon_2} \end{aligned}

其中,nxn_x,nyn_ynzn_z 为法方向在X,Y,Z三个方向的分量;kk 为一缩放系数使得(nxn_x,nyn_ynzn_z)为单位向量。若给定某点的法方向,则该点的球坐标参数 θ\thetaφ\varphi 可由下式计算:

φ=atan2((ryny)12ϵ1,(rxnx)12ϵ1)θ=atan2((rxnx/(cosφ)2ϵ1)12ϵ2,(rznz)12ϵ2)orθ=atan2((ryny/(sinφ)2ϵ1)12ϵ2,(rznz)12ϵ2)\begin{aligned} \varphi &= \text{atan2} \left( (r_y n_y)^{\frac{1}{2-\epsilon_1}}, (r_x n_x)^{\frac{1}{2-\epsilon_1}} \right) \\ \theta &= \text{atan2} \left( \left(r_x n_x / (\cos\varphi)^{2-\epsilon_1} \right)^{\frac{1}{2-\epsilon_2}}, (r_z n_z)^{\frac{1}{2-\epsilon_2}} \right) \\ \text{or} \quad \theta &= \text{atan2} \left( \left(r_y n_y / (\sin\varphi)^{2-\epsilon_1} \right)^{\frac{1}{2-\epsilon_2}}, (r_z n_z)^{\frac{1}{2-\epsilon_2}} \right) \end{aligned}

有向距离场(Signed distance field)

给定查询节点 PP,该点在聚合超椭球表面的投影定义为

xQ=(xQ,yQ,zQ)=(cxP,cyP,czP)\begin{aligned} \vec{x}_Q = (x_Q,y_Q,z_Q) = (c x_P,c y_P,c z_P) \end{aligned}

其中,xx,yyzz 表示点在X,Y,Z三个方向的坐标;下标 PP and QQ 表示点 PPQQ;参数 cc 为缩放系数使得点 QQ 在聚合超椭球上,即满足方程 (1)(1)。 将点 QQ 带入方程 (1)(1) 可求得参数 cc,为

c=(1f(xP)+1)ϵ22\begin{aligned} c = \left( \frac{1}{f(\vec{x}_P)+1} \right)^{\frac{\epsilon_2}{2}} \end{aligned}

有向距离场可定义为点 PPQQ 之间的距离,为

Φ(xP)=(c1)xP\begin{aligned} \Phi(\vec{x}_P) = (c-1)||\vec{x}_P|| \end{aligned}

其中,xP||\vec{x}_P|| 表示向量 xP\vec{x}_P 的欧拉长度,即二阶范数。


聚合超二次曲面(Poly-super-quadrics)

表达式(Formulation)

超二次曲面可表示为

f(x,y,z)=xrx2ϵx+yry2ϵy+zrz2ϵz1=0(2)\begin{aligned} f(x, y, z) = \left| \frac{x}{r_{x}} \right|^{\frac{2}{\epsilon_x}} + \left| \frac{y}{r_{y}} \right|^{\frac{2}{\epsilon_y}} + \left| \frac{z}{r_{z}} \right|^{\frac{2}{\epsilon_z}} - 1 = 0 \tag{2} \end{aligned}

其中,rxr_{x},ryr_{y}rzr_{z} 分别为超二次曲面在 xx,yyzz 方向的半轴长(semi-principal axis length);ϵx\epsilon_{x},ϵy\epsilon_{y}ϵz\epsilon_{z} 是表征超二次曲面球度或块度(blockness)的三个形状参数。当参数 ϵx\epsilon_{x},ϵy\epsilon_{y}ϵz\epsilon_{z} 在 (0, 2) 区间内时,超二次曲面为凸型;否则为非凸型。对于聚合超二次曲面,半轴长参数 rxr_{x} 在负X轴象限取 rxr_{x^-},在正X轴象限取 rx+r_{x^+};形状参数 ϵx\epsilon_{x} 在负X轴象限取 ϵx\epsilon_{x^-},在正X轴象限取 ϵx+\epsilon_{x^+}ryr_{y},rzr_{z},ϵy\epsilon_{y}ϵz\epsilon_{z} 亦然。

支撑映射(Support mapping)

参考笛卡尔坐标系和球坐标系之间的坐标变换,超椭球的球坐标参数化可表示为

x=rx(sinθ)ϵx(cosφ)ϵxy=ry(sinθ)ϵy(sinφ)ϵyz=rz(cosθ)ϵz\begin{aligned} x &= r_x (\sin\theta)^{\epsilon_x} (\cos\varphi)^{\epsilon_x} \\ y &= r_y (\sin\theta)^{\epsilon_y} (\sin\varphi)^{\epsilon_y} \\ z &= r_z (\cos\theta)^{\epsilon_z} \end{aligned}

其中,θ\thetaφ\varphi 分别为极角(polar angle)与方位角(azimuth angle)。把xx,yyzz分别对θ\thetaφ\varphi 求偏导,可得超椭球表面的方向向量为

xθ=ϵxrx(sinθ)ϵx1(cosθ)(cosφ)ϵxyθ=ϵyry(sinθ)ϵy1(cosθ)(sinφ)ϵyzθ=ϵzrz(cosθ)ϵz1(sinθ)\begin{aligned} x_\theta &= \epsilon_x r_x (\sin\theta)^{\epsilon_x-1} (\cos\theta) (\cos\varphi)^{\epsilon_x} \\ y_\theta &= \epsilon_y r_y (\sin\theta)^{\epsilon_y-1} (\cos\theta) (\sin\varphi)^{\epsilon_y} \\ z_\theta &= \epsilon_z r_z (\cos\theta)^{\epsilon_z-1} (-\sin\theta) \end{aligned}

以及

xφ=ϵxrx(sinθ)ϵx(cosφ)ϵx1(sinφ)yφ=ϵyry(sinθ)ϵy(sinφ)ϵy1(cosφ)zφ=0\begin{aligned} x_\varphi &= \epsilon_x r_x (\sin\theta)^{\epsilon_x} (\cos\varphi)^{\epsilon_x-1} (-\sin\varphi) \\ y_\varphi &= \epsilon_y r_y (\sin\theta)^{\epsilon_y} (\sin\varphi)^{\epsilon_y-1} (\cos\varphi) \\ z_\varphi &= 0 \end{aligned}

求两个方向向量的叉乘,并化简,可得到超椭球表面的法方向为(注,法方向各分量同时除于了 ϵxϵyϵzrxryrz(sinθ)ϵx+ϵy1(cosθ)ϵz1(sinφ)ϵy1(cosφ)ϵx1\epsilon_x \epsilon_y \epsilon_z r_x r_y r_z (\sin\theta)^{\epsilon_x+\epsilon_y-1} (\cos\theta)^{\epsilon_z-1} (\sin\varphi)^{\epsilon_y-1} (\cos\varphi)^{\epsilon_x-1}

nx=kϵxrx(sinθ)2ϵx(cosφ)2ϵxny=kϵyry(sinθ)2ϵy(sinφ)2ϵynz=kϵzrz(cosθ)2ϵz\begin{aligned} n_x &= \frac{k}{\epsilon_x r_x} (\sin\theta)^{2-\epsilon_x} (\cos\varphi)^{2-\epsilon_x} \\ n_y &= \frac{k}{\epsilon_y r_y} (\sin\theta)^{2-\epsilon_y} (\sin\varphi)^{2-\epsilon_y} \\ n_z &= \frac{k}{\epsilon_z r_z} (\cos\theta)^{2-\epsilon_z} \end{aligned}

其中,nxn_x,nyn_ynzn_z 为法方向在X,Y,Z三个方向的分量;kk 为一缩放系数使得(nxn_x,nyn_ynzn_z)为单位向量。若给定某点的法方向,则该点的笛卡尔坐标可由下式计算:

x=rx(ϵxrxnxk)ϵx2ϵxy=ry(ϵyrynyk)ϵy2ϵyz=rz(ϵzrznzk)ϵz2ϵz\begin{aligned} x &= r_x \left( \frac{\epsilon_x r_x n_x}{k} \right)^{\frac{\epsilon_x}{2-\epsilon_x}} \\ y &= r_y \left( \frac{\epsilon_y r_y n_y}{k} \right)^{\frac{\epsilon_y}{2-\epsilon_y}} \\ z &= r_z \left( \frac{\epsilon_z r_z n_z}{k} \right)^{\frac{\epsilon_z}{2-\epsilon_z}} \\ \end{aligned}

将上式带入公式 (2)(2) 可求得系数 kk,进而得到该点的坐标 xx,yyzz

Zhao, S., & Zhao, J. (2019). A poly-superellipsoid-based approach on particle morphology for DEM modeling of granular media. International Journal for Numerical and Analytical Methods in Geomechanics, 43(13), 2147–2169.