adaptive sampling

I got an interesting idea today.

As you may already know, I’ve been making models of Klein bottles an’ stuff; heretofore they’ve all been in the form of bent rods, but where possible I’d prefer a continuous surface. (A hollow body must have holes so that unused powder can be shaken out; but not all of my designs have enclosed spaces.) How to place a minimum number of vertices so that deviations from the abstract shape are within the resolution of the process? That’s less obvious with more degrees of freedom.

So, today’s idea. Start with an arbitrary set of sample nodes (in the abstract space of the parametric variables, rather than on the target surface itself), and their Delaunay triangulation. Along each edge of the triangulation, measure the deviation of the surface from a straight line; this gives the edge a weight. Move each node to the weighted average of its neighbors (with a bit of noise); thus, an edge whose image is strongly curved gets shorter.

After the movement phase, each edge ought to be checked, whether it’s still a Delaunay edge or needs to be replaced by the other diagonal of the quadrilateral formed by its two triangles. I don’t yet have criteria for adding nodes where existing nodes are too far apart, or merging them if they become redundant.

Scribbles: The Ensmoothening, Part II

One thing I noticed in that last series of charts is that more than one degree of discontinuity doesn’t help: the best-looking curves are mostly on the diagonal, where only the last nonzero derivative is discontinuous. Here, therefore, are those curves all together.

In column zero, the tangent angle is piecewise constant; in column one, it is a piecewise linear function of path length, resulting in six circular arcs; in column two it is piecewise quadratic, resulting in six clothoid arcs with continuous curvature; and so on.

Of course the arcs are approximated by cubics; to improve the match, I put a knot wherever any derivative crosses zero, as well as at the discontinuities. (See the knots.)

ensmoothening scribbles

Presented for your consideration: the somewhat disappointing results of an experiment in using piecewise polynomial spirals, of varying degrees of continuity, to fit the Takana — disappointing in that few if any of the curves are as pretty as I hoped.

I treat here only those that can be drawn with a single stroke. (The others can be built by combining subsets of these strokes.) In each chart, the degree of continuity increases downward, and the degree of the polynomials increases to the right.

A polynomial spiral is a curve whose tangent angle is a polynomial function of arc length; it has the form `integral(exp(i*f(t)))`. (I implement it as a Taylor series.) In principle, `f` could be any real-valued function. If `f` is constant, you get a straight line; if `f` is linear (leftmost column in these small charts), you get a circle; if `f` is quadratic, you get an *Euler spiral* or *Cornu spiral* or *clothoid*, which is much used in railroads and highways to avoid sudden changes in lateral acceleration.

Here `f` is a least-squares fit to the step function which is the direction of the squared stroke. The top row of the chart shows continuity of degree zero: the component arcs meet, but that’s all; `f` is discontinuous. Degree one: the tangent angle is a continuous function of arc length. Degree two: the first derivative of tangent angle with respect to arc length, i.e. the curvature, is continuous. Degree *n*: the (n-1)th derivative of tangent angle, i.e. the (n-2)th derivative of curvature, is continuous.

Click each chart to extend it.

**Later:** I have come to a couple of conclusions. In most of these charts, the best entry to my eye is where `f` is piecewise quadratic with one continuous derivative. More than one degree of polynomial above the continuous degree adds little fidelity and detracts from beauty.

( . . more . . )

alternate poker

Suppose your deck has more than four suits, or some number other than thirteen cards per suit. What happens to the ranks of poker hands?

1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3
5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
4 F F F * B B B * O O O A A A A A A A A A A A A A A A A A
5 F F F F F F F B B B B B O O A A A A A A A A A A A D D D
6 F F F F F F F F F F F B B B B B B A A D D D D D D D D D
7 F F F F F F F F F F F F F F F B C C C C E E D D D D D D
8 F F F F F F F F F F F F F F G G G G G C C C C C E E E D
9 F F F F F F F F F F F F F G G G G G G G G G G C C C C E
10 F F F F F F F F F F F F G G G G G G G G G G G G G G G G
11 F F F F F F F F F F F G G G G G G G G G G G G G G G G G
12 F F F F F F F F F F G G G G G G G G G G G G G G G G G G
13 F F F F F F F F F F G G G G G G G G G G G G G G G G G G
14 F F F F F F F F F G G G G G G G G G G G G G G G G G G G
15 F F F F F F F F F G G G G G G G G G G G G G G G G G G G
16 F F F F F F F F F G G G G G G G G G G G G G G G G G G G

O: the familiar case: straight flush > four of a kind > full house > flush > straight > three of a kind > two pair > one pair.

A: four > full house > straight > flush.

B: four > flush > full house > straight.

C: four > flush > straight > full house.

D: four > straight > full house > flush.

E: four > straight > flush > full house.

F: flush > four > full house > straight.

G: flush > four > straight > full house.

*: surprisingly only two cases where two of the scoring hands are equally rare: with four suits and twelve ranks, flush = full house; with four suits and eight ranks, flush = four.

elusive avoidance

I’ve been designing printable models of the Lawson-Klein surface

w = cos(u) cos(2v)

x = cos(u) sin(2v)

y = sin(u) cos(v)

z = sin(u) sin(v)
As you can plainly see, this figure lives in S3 (positively curved 3-space), so stereographic projection can bring it into E3 (Euclidean 3-space) without adding more self-intersections. (It crosses itself at u=nπ.)

To minimize the distortion of the projection, I want the projection center to be as far as possible from the surface. One thing I tried was pursuit: starting with an arbitrary point P in S3 and an arbitrary point L(u,v) in the surface, move (u,v) to bring L closer to P while simultaneously moving P away from L. This gets me nowhere so far: either it fails to converge or P converges to the antipodes of L, which is also in the surface (change u by π).

unapologetically one-sided

My newest design on Shapeways is a model of the Lawson-Klein surface : a stereographic projection of

( cos(u)cos(2v), cos(u)sin(2v), sin(u)cos(v), sin(u)sin(v) )