Publications by Stéphane Laurent

Enneper surface with square checkerboard

06.10.2023

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

02.10.2023

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

01.10.2023

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

25.09.2023

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

14.09.2023

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

13.09.2023

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

10.09.2023

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

07.09.2023

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

03.08.2023

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

19.07.2023

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