M. Miki, T. Igarashi. and P. Block, Paramertic Self-supporting Surfaces via Direct Computation of Airy Stress Functions, ACM Transactions on Graphics (TOG), vol. 34, no. 4, 2015 (to apppear).


This paper presents a method that employs parametric surfaces as surface geometry representations at any stage of a computational process to compute self-supporting surfaces. This approach can be differentiated from existing relevant methods because such methods represent surfaces by a triangulated mesh surface or a network consisting of lines. The proposed method is based on the theory of Airy stress functions. Although some existing methods are also based on this theory, they apply its discrete version to discrete geometries. The proposed method simultaneously applies the theory to parametric surfaces directly and the discrete theory to the edges of parametric patches. The discontinuous boundary between continuous patches naturally corresponds to ribs seen in traditional vault masonry buildings. We use nonuniform rational B-spline surfaces in this study; however, the basic idea can be applied to other parametric surfaces. A variety of self-supporting surfaces obtained by the proposed computational scheme is presented.





Github repo is found here.
The code is written in pure C#.
This implements basic calculations of shape functions and first and second derivatives of NURBS surfaces. (So it might be useful for general computational methods that target NURBS.)
To compile the code, Sho and Mosek are needed as external libraries.
This code works as a custom component of Grasshopper. It requires Rhinoceros 5 and the latest Grasshopper.

Some note about Hodge star

In the paper, it is written like $*h*=*H*$. However, this equality is suspicious because Hodge star operator used in the paper is actually just defining "formal" algebraic rules that project basis to basis.
Actually, $*h*=*H*$ was first derived without introducing Hodge star operator and later on, it was introduced to "fit the paper to maximum pages".
First, we represent the coordinate transformation between $dx_{\alpha}$ and $d\theta^{i}$ by

\begin{align} \left[\begin{array}{c} dx_{1}\\ dx_{2} \end{array}\right]=\left[F\right]\left[\begin{array}{c} d\theta^{1}\\ d\theta^{2} \end{array}\right]. \end{align}

Second, the matrix representation of $*H*$ is as follows:

\begin{align} \left[dx_{1}dx_{2}\right]R_{90}^{T}\left[H\right]R_{90}\left[\begin{array}{c} dx_{1}\\ dx_{2} \end{array}\right]. \end{align}

This is expanded as follows:

\begin{align} =\left[d\theta^{1}d\theta^{2}\right]\left[F\right]^{T}R_{90}^{T}\left[H\right]R_{90}\left[F\right]\left[\begin{array}{c} d\theta^{1}\\ d\theta^{2} \end{array}\right], \end{align}

Respecting $\left[F\right]R_{90}\left[F^{T}\right]=\sqrt{g}R_{90}$, this is further expanded as follows:

\begin{align} =\left[d\theta^{1}d\theta^{2}\right]\left[F\right]^{T}\left[F\right]R_{90}^{T}\left[F\right]^{T}\left[H\right]\left[F\right]R_{90}\left[F\right]^{T}\left[F\right]\left[\begin{array}{c} d\theta^{1}\\ d\theta^{2} \end{array}\right]g^{-1}. \end{align}

Because $\left[F\right]^{T}\left[F\right]$ is the matrix whose entry is $g_{ij}$, we finally obtain

\begin{align} =\left[\theta_{1}\theta_{2}\right]R_{90}^{T}\left[h\right]R_{90}\left[\begin{array}{c} \theta_{1}\\ \theta_{2} \end{array}\right]g^{-1}. \end{align}

This is the matrix representation of $*h*$.

Another derivation of the coefficient choice

In the Appendix B of the original paper, the coefficient between kink angle $D$ and axial force $n^{11}$ was identified by a trial and error approach and it was identified as $\gamma^{-1}$.
More rigorous proof is provided here. The descriptions in this section is based on descriptions in Appendix A and Fig. 12 of the original paper.
We start with

\begin{align} F_{L}^{n}=\frac{1}{g}\frac{1}{\sqrt{g^{22}}}\frac{\sqrt{g^{22}}}{g^{22}}\nabla_{1}\nabla_{1}\phi dl==\frac{1}{g_{11}}\nabla_{1}\nabla_{1}\phi dl. \end{align}

We denote the metric of the curve $\gamma$and only consider a special case that $\gamma=g_{11}$ is satisfied on both left and right patch sides.
Note that $\nabla_{1}\nabla_{1}\phi=\partial_{1}\partial_{1}\phi-\Gamma_{11}^{k}\partial_{k}\phi$ and $\Gamma_{11}^{1}$ can be decomposed as $\Gamma_{11}^{1}=\Gamma_{11}^{2}\frac{g^{12}}{g^{22}}+\Gamma_{111}\frac{1}{g_{11}}$ , where $\Gamma_{111}$ is the Christoffel symbol of the first kind while $\Gamma_{11}^{2}$ is the second kind. Hence, we obtain

\begin{align} F_{L}^{n}=\frac{1}{\gamma}\left(\partial_{1}\partial_{1}\phi-\Gamma_{11}^{2}\partial_{2}\phi-\Gamma_{11}^{2}\frac{g^{12}}{g^{22}}\partial_{1}\phi-\Gamma_{111}\frac{1}{g_{11}}\partial_{1}\phi\right)dl. \end{align}

Note that $F_{R}^{n}$ has the same representation. The first and fourth terms take the same values for both left and right patches. Hence, when subtracting $F_{R}^{n}$ from $F_{L}^{n}$, only the second and third terms survive.
Additionally, a quantity $\psi=\Gamma_{11}^{2}/\sqrt{g^{22}}$ takes the same value for both left and right patches. This $\psi$ represents the curvature of the curve. Using $\psi,\,\gamma$ and $n^{11}$, $F_{C}^{n}$ can be represented as follows:

\begin{align} F_{C}^{n}=\psi n^{11}dl. \end{align}

Finally, $R^{n}=F_{L}^{n}-F_{R}^{n}$ can be represented as follows:

\begin{align} R^{n}=\frac{\psi}{\gamma}\left(\left[-\frac{\sqrt{g^{22}}}{g^{22}}\left(g^{22}\partial_{2}\phi+g^{12}\partial_{1}\phi\right)\right]_{L}-\left[...\right]_{R}\right)dl \end{align}
\begin{align} =\frac{\psi}{\gamma\sqrt{\gamma}}\left(\left[-\sqrt{g}\left(g^{22}\partial_{2}\phi+g^{12}\partial_{1}\phi\right)\right]_{L}-\left[...\right]_{R}\right)dl \end{align}

In order to satisfy $F_{C}^{n}=R^{n}$, $n^{11}$ must be

\begin{align} n^{11}=\frac{1}{\gamma\sqrt{\gamma}}\left(\left[-\sqrt{g}\left(g^{22}\partial_{2}\phi+g^{12}\partial_{1}\phi\right)\right]_{L}-\left[...\right]_{R}\right). \end{align}

Comparing Eq. (11) with Eq. (5) in the original paper, we identify that the coefficient between kink angle and axial force is $\gamma^{-1}$. The same coefficient must be derived from $R^{1}=F_{L}^{1}-F_{R}^{1}$. We leave it to future work.