Supertoroid

class Supertoroid : public feasst::Shape

As currently implemented, the is_inside function does not take into account the diameter of the particle. So different size particles will experience difference sized cavities if using ModelHardShape. Put another way, only the center position is considered.

A supertoroid is given by the following surface vector

\(\left\{ \begin{array}{lr} a_1[a_4+\cos(\eta)^\epsilon_1]\cos(\omega)^\epsilon_2 & -\pi \le \eta \le \pi \\ a_2[a_4+\cos(\eta)^\epsilon_1]\sin(\omega)^\epsilon_2 & -\pi \le \omega \le \pi \\ a_3\sin(\eta)^\epsilon_1 & \end{array} \right\}\)

with an implicit function, \(F\), where \(F=1\) at the surface, \(F<1\) inside, and \(F>1\) outside,

\(\left{\left[\left(\frac{x}{a_1}\right)^{\frac{2}{\epsilon_2}} + \left(\frac{y}{a_2}\right)^{\frac{2}{\epsilon_2}\right)^{\frac{\epsilon_2}{2}}-a_4\right)^{\frac{2}{\epsilon_1}}+\left(\frac{z}{a_3}\right)^{\frac{2}{\epsilon_1}}\).

The size of the hole is related to \(a_4\), where the radius of the toroid, \(R=a_4\sqrt{a_1^2+a_2^2}\).

To model a superquadric, set \(a_4=0\).

Arguments

  • center: set the unique key for the center positions. Thus, arguments of “key[i]” are expected to follow. The “[i]” is to be substituted for integer dimensions 0, 1, 2, … The “[i]” are also expected to be in order, starting from 0. If center arg is not used, a three dimensional origin is assumed.

  • a1: (default: 1).

  • a2: (default: 1).

  • a3: (default: 1).

  • a4: (default: 0).

  • epsilon1: (default: 1).

  • epsilon2: (default: 1).