Publications by Stéphane Laurent
Enneper surface with square checkerboard
In a previous post, I showed how to use the CGAL parameterizations ported to my package cgalMeshes to decorate the Enneper surface of order three with a radial checkerboard. Here I will show how to map an ordinary, square checkeboard on the Enneper surface of order two. library(cgalMeshes) library(rgl) # E...
3623 sym R (3904 sym/13 pcs) 16 img
Elliptic cyclide by inversion of a torus
An elliptic Dupin cyclide can be obtained by inversion of a torus with respect to a sphere. In the previous post, I showed a rotoid (an helix) dancing around a cyclide: I constructed this dancing rotoid in the same way as the dancing rotoid around a torus: Click here ...
2147 sym 12 img
The torus and the elliptic cyclide
The most used parameterization of the ordinary torus (the donut) is: \[ \textrm{torus}_{R,r}(u, v) = \begin{pmatrix} (R + r \cos v) \cos u \\ (R + r \cos v) \sin u \\ r \sin v \end{pmatrix}. \] The elliptic Dupin cyclide is a generalization of the torus. It has three nonnegative parameters \(c < \m...
1721 sym 10 img
Implicitization for the spherical trochoid
If you didn’t read or if you don’t remember my post Using implicitization to split a ball, take a look at it before reading this one. To sum up, I took a spherical curve, namely a satellite curve, and I derived a surface whose intersection with the sphere is the satellite curve. I did that thanks to the so-called...
3498 sym R (3687 sym/6 pcs) 8 img
The Cantor expansion revisited
On my former blog, I wrote a post about the Cantor expansion of a natural integer. This is a generalization of the well-known binary expansion. For example, the Cantor \((3,4,5)\)-expansion of a natural integer \(N\) is a triplet \[ (\epsilon_0, \epsilon_1, \epsilon_2) \in \{0,1,2\} \times \...
2460 sym R (2187 sym/4 pcs)
The pretty Klein j-invariant function
Here are four representations of the Klein j-invariant function: The Klein j-invariant function is a complex function defined on the upper half-plane of the complex numbers. On the above pictures, we mapped it to a circle with the inverse modified Cayley transformation, which is defined by \[ \Psi(z)...
4612 sym R (1939 sym/10 pcs) 12 img
Enneper surface with rotating checkerboard
The github branch of my Github repository cgalMeshes has a vignette explaining how to use parameterizations of surface meshes. A parameterization allows to map a texture on a mesh. Some of them are conformal, meaning that they preserve the angles (the best they can). To install this branch with the vignette, ...
1854 sym R (2202 sym/9 pcs) 8 img
A dull and shadowed ‘rgl’ mesh
The visualization of a rgl mesh is rather shiny by default. We’ll see how to make it dull and shadowed. Take for instance the Barth sextic: ## Barth sextic is the isosurface f=0 #### phi <- (1 + sqrt(5)) / 2 f <- function(x, y, z){ 4 * (phi^2*x^2 - y^2) * (phi^2*y^2 - z^2) * (phi^2*z^2 - x^2) - (1 + 2*phi) * (x^2 + y^2 + z^2 - 1)...
889 sym R (1300 sym/2 pcs) 4 img
Drawing a tubular path with Julia
I implemented the framed closed curves exposed in this blog post, in Julia and R. In fact it is useless with R, because the rgl function cylinder3d is faster and better. Here is the Julia implementation: using LinearAlgebra using Quaternions using Meshes # quaternion corresponding to "the" rotation mapping u to v function...
1074 sym R (5445 sym/3 pcs) 4 img
Using implicitization to split a ball
I introduced the Gröbner implicitization and the giacR package in the previous post. We will see an application here. Consider this satellite curve: satelliteCurve <- function(t, rho = 3/4) { A <- cospi(rho) B <- sinpi(rho) cost <- cos(t) cos2t <- cos(2*t) sint <- sin(t) sin2t <- sin(2*t) cbind( ...
2224 sym R (1844 sym/4 pcs) 6 img