如何画四足动物
How to Draw a Tetrapod

原始链接: https://dotat.at/@/2025-10-24-tetrapod.html

## 四足体建模与设计见解 本文详细介绍了作者对混凝土四足体建模的探索——这种常用于海岸防御的消波结构,最近在设计领域也越来越受欢迎。出于好奇,作者试图找到一种数学上优雅的方法来定义四足体的形状,参考了Danel和Anglès d’Auriac的原始专利,其中规定了腿部的角度和比例。 作者使用build123d和CQ-editor成功地建模了一个四足体,从一个包围四面体的立方体的角开始构建。令人惊讶的是,“目测估算”方法得出的比例与发明者的规范非常接近——腿长和宽度大致等于立方体边长的一半。 该模型使用截断锥体来形成腿部,截断锥体的锥角由潜在的几何形状确定。关键尺寸,如大腿和脚踝的圆,是根据整体尺寸计算得出的,从而产生一个合理且视觉上准确的表示。作者提供了详细的公式以及一个交互式three.js动画和源代码的链接,供进一步研究。最后,作者思考了腿部的交汇点以及倒角脚设计背后的潜在工程目的。

一个黑客新闻的讨论围绕着“四足动物”——不是指四肢动物,而是日本流行的、奇特的混凝土海岸防御结构。一个链接(dotat.at)引发了这次讨论,最初让一位用户以为是关于各种生物的绘画*技巧*。 这个话题很快转变为有趣的轶事。一位用户分享了一个关于潜在伴侣的四足动物形状的酒塞,被认为是彼此相容的可爱故事,而另一位用户则链接了制作四足动物毛绒玩具的资源,以重现日本海滩的氛围。一个简洁幽默的回复简单地说:“1. 画四个圆圈。” 该帖子还包含了一个关于YC(Y Combinator)2026冬季批次的申请公告。
相关文章

原文

Concrete tetrapods are used to dissipate wave energy in coastal defences.

There’s a bit of a craze for making tetrapod-shaped things: recently I’ve seen people making a plush tetrapod and a tetrapod lamp. So I thought it might be fun to model one.

I found a nice way to describe tetrapods that relies on very few arbitrary aesthetic choices.

Click here to play with an animated tetrapod which I made using three.js. (You can see its source code too.)

Click to skip to the recipe

a tetrapod constructed inside a cube, with lines marking the tetrahedron enclosed by the cube, and the circles used to construct the tetrapod

There is a patent for tetrapods written by the inventors of the tetrapod, Pierre Danel and Paul Anglès d’Auriac. It says,

The half angle a at the apex of the cone corresponding to one leg is between 9° and 14° while the leg length base width ratio b/c for each leg is between 0.85 and 1.15 and is preferably substantially 1/1.

One manufacturer has a diagram suggesting a taper of 10°.

A lot of pictures of tetrapods (one, two, three) have chunky chamfers at the ends of the legs. In some cases it looked to me like the angle of the chamfer matches the angle of the edges of the tetrahedron that the tetrapod is constructed from, which is the same as the angle of the faces of the cube that enclose the tetrahedron.

So I thought I would try constructing a tetrapod from the corners of a cube inwards.

My eyeball guesstimate sketch produced a result that’s amazingly neat. It’s the main reason I’m writing this blog post!

Using build123d and CQ-editor, I started with a cube centred on the origin enclosing a tetrahedron, with a common vertex at (100,100,100). I drew a pair of circles near the common vertex, just touching the faces of the cube and edges of the tetrahedron. These circles outlined where I thought the edges of the chamfer might be.

Using a taper angle of 10°, I found another circle centred on the origin that would be the base of the leg. I drew truncated cones to make the leg and chamfer, and replicated them to the three other axes of the tetrahedron.

With a bit of fettling of the sizes of the first two circles, I had a very plausible tetrapod!

To validate this sketch, I found the diameter of the circle around the leg near the centre of the cube where it just touches the x,y,z axes, and the distance from that circle to the end of the leg.

To my surprise, the width and length of the leg both came out very close to 100!

It’s good that they are about the same, because that’s what the inventors of the tetrapod specified. That means my eyeball guesstimate got the proportions about right. What’s amazing is that they match half the side length of the cube that I started with!

You can read the source code for a tetrapod drawn using three.js and play with the resulting animation.

preliminaries

  • Pick a size.

    The size is the length and diameter of each tetrapod leg, half the height of the tetrapod as it is constructed balancing on two legs, and a few percent less than half the height of the tetrapod when it’s standing on three legs.

  • The tetrapod is constructed inside a cube centred at the origin, with vertices at (± size, ± size, ± size). Inside the cube is a tetrahedron, and the tetrapod’s legs point towards its vertices.

    In the picture above, the cube is shaded green, and the tetrahedron is outlined with straight red lines.

  • We will construct the positive leg along its main axis, the vector from the origin to the common vertex (+size, +size, +size).

    The three other legs will be cloned from the positive leg.

  • The leg is constructed from truncated cones.

    A cone is described by its taper, r / a = tan(θ), where a is the distance from the apex of the cone, and r is the radius of the circular section of the cone at that distance.

    Every cone’s axis is the main axis, but their apex varies.

  • A cone is truncated by a circle with radius r and distance d from the origin along the main axis.

    (Note that the apex distance a and origin distance d differ when the apex of the cone is not at the origin.)

  • We need two scaffolding cones.

    The axis cone has its apex at the orign and its sides just touch the x,y,z axes.

    axis_taper = sqrt(2)
    
    derivation

    z = (0,0,1)

    xyz = (1,1,1)

    z · xyz = |z| |xyz| cos(θ)

    1 = 1 * sqrt(3) * cos(θ)

    a / h = cos(θ) = sqrt(1/3)

    r² = h² − a² = |z|² − a² = 1 − 1/3

    tan(θ) = r / a = sqrt(2/3) / sqrt(1/3) = sqrt(2)

    The face cone has its apex at the common vertex. Its sides just touch the faces of the cube along the same lines as the edges of the tetrahedron.

    apex_d = size * sqrt(3)
    face_taper = sqrt(1/2)
    
    derivation

    xy = (1,1,0)

    xyz = (1,1,1)

    xy · xyz = |xy| |xyz| cos(θ)

    2 = sqrt(2) * sqrt(3) * cos(θ)

    a / h = cos(θ) = sqrt(2/3)

    r² = h² − a² = |xy|² − a² = 2 − 2*2/3

    tan(θ) = r / a = sqrt(2/3) / sqrt(4/3) = sqrt(1/2)

circles

The leg is constructed from four circles: waist, thigh, ankle, sole. In the picture above, you can see the thigh, ankle, and sole circles outlined in red. The waist is hidden inside.

As required by the inventors of the tetrapod, our chosen size is equal to the diameter of the thigh, and to the distance between the thigh and the sole.

The foot of the tetrapod, between the ankle and the sole, is the chamfered part. It is a section of the face cone.

The ankle circle is chosen so that the taper of the main part of the leg is about 10°. It turns out that a nice round number, r = size / 3, makes the taper 10.41°.

To fill in the core of the tetrapod, between the thigh circles of the four legs, we will extrapolate the leg taper to find the waist circle whose centre is the origin.

Hence,

  • Locate the thigh circle from its radius in the axis cone

    thigh_r = size / 2
    thigh_d = 0 + thigh_r / axis_taper
    
  • Locate the ankle circle from its radius in the face cone

    ankle_r = size / 3
    ankle_d = apex_d - ankle_r / face_taper
    
  • The thigh circle and leg length determine the position of the sole circle, from which we get its radius

    sole_d = thigh_d + size
    sole_r = (apex_d - sole_d) * face_taper
    
  • The thigh and ankle give us the taper of the leg

    leg_taper = (thigh_r - ankle_r)
              / (ankle_d - thigh_d)
    
  • Extrapolate back to the origin to find the radius of the waist

    waist_d = 0
    waist_r = thigh_r + thigh_d * leg_taper
    

legs

  • Make the positive leg from two truncated cones:

    one between the waist and ankle,

    one between the ankle and sole.

  • To make another leg, take a copy of the positive leg and rotate it 180° about the x or y or z axis.

    Do this for all three axes to get all of the legs.

The legs overlap where their waists spread out around the origin. Conveniently, the legs meet at planes, so we can clip at these planes to make a model where they don’t overlap.

The positive leg meets the other legs at the three planes through the origin with normals:

    (1,1,0)
    (1,0,1)
    (0,1,1)

It almost feels like the shape of the tetrapod was discovered rather than designed.

A tetrahedron nested in a cube is a fun framework for a shape. Using half the cube’s side length to determine the length and width of the legs seems like a natural choice, and a third of the side length for the taper is a plausible option that turns out quite elegant.

Maybe the chamfer at the foot is designed? I like the way it both hints at the cube from which it was constructed, and presumably has good engineering properties such as making the corner less prone to damage and easier to remove from its mould.

One thing I have not yet managed to work out (except by punting the problem to a CAD kernel) is exactly what ellipse is formed where the legs intersect. Investigations continue…

联系我们 contact @ memedata.com