# Function to describe teardrop shape

If I fill a plastic ziploc-shaped bag with water, the cross section profile should be sort of teardrop shaped (assuming we ignore the edge effects of the bag being sealed on the sides as well as the top and bottom). The bag should "sag"/get wider until to get the center of gravity as low as possible. Initially, getting wider will let more water towards the bottom but eventually this is offset by the bottom of the bag moving up (because the sides are fixed length).

Is there a common function that describes the shape the cross-section of the bag makes?

I would guess the bottom is a parabola, since gravity likes to make parabolas. Then I would guess the top is linear because its under tension. But I have no idea what the transition region might look like and whether you could put those two together into a nice function.

• That's a good question. Parabola is probably wrong: gravity makes catenoids from chains and those are not parabolas. Naive attempt: reducing problem to 2D, suppose the curve describing the bag is $\gamma(t)$ for some $t$ between $-T$ and $T$, say. I would start by equating the hydrostatic pressure of water to the cuvature (second derivative) of the bag. This will give you a second order differential equation for $\gamma$ which can be coupled with the boundary conditions $\gamma(T)=\gamma(-T)$ and $\dot\gamma(T)=R\dot\gamma(-T)$ where $R$ is the (linear) reflection about the vertical axis. – Oskar Limka Sep 22 '15 at 21:01
• See rose. – Lucian Sep 23 '15 at 1:50
• Water droplets form under gravity and surface tension. There exists a formula for the pressure due to surface tension as a function of the surface's local radii of curvature. It is not impossible that this equation could be used in cylindrical coordinates to find a formula for the shape of a droplet. See also figures 2 and 3 here. – Wouter Mar 1 '16 at 15:37
• Side note: Raindrops are not teardrop-shaped; see here about "rainburgers". – Brian Tung Mar 1 '16 at 18:41
• – lhf Mar 1 '16 at 18:58

I did not know the elastica differential equation of the teardrop shape before Narasimham's answer. The equation is applicable if the bag is not as tall and with little enough water that the top will actually have partial vacuum (think Superman sucking on a a straw) and will be pushed flat by the atmosphere. At the other extreme, if you add as much water in the inside as you can fit, then pressure overcomes gravity and the shape becomes a circle, which is a solution of the elastica equation. For a nice read on elastica: Raphael Linus Levien's PhD thesis From Spiral to Spline: Optimal Techniques in Interactive Curve Design.

There is a closed-form solution to the elastica equation, the syntractrix of Poleni:

$$y = \sqrt{4 - x^2} - \log\left(\frac{\sqrt{4 - x^2} + 2}{x}\right)$$

Or as a parametric curve with unit velocity $$\left(\frac{dx}{ds}\right)^2+\left(\frac{dy}{ds}\right)^2=1$$:

$$\begin{gather}x = \frac{2}{\cosh(s)}\\y = s - 2\tanh(s)\end{gather}$$

Figure 1. Syntractrix of Poleni.

$$y = 0$$ at the tip of the tail at $$x = 0.57683981788998291629$$ (solved numerically) and at the round end at $$x = 2$$. In terms of $$s$$ these points are at $$s = \pm1.9150080481545374814$$ and $$s = 0$$. The arc length of the teardrop part (both sides) is $$2\times1.9150080481545374814$$. The tip of the tail is duller than 90°: approximately 112.95°.

The teardrop can be simulated with a 2-d physics engine such as matter.js. With the right filling particle count, the droplet follows the shape of the syntractrix (Fig. 1) quite closely (Fig. 2).

Figure 2. Simulation of a particle system: start (top) and after running for some time (bottom). The simulation was started with a compressed cloud of circle particles of random sizes surrounded by a circular pearl necklace (turquoise) with the centers of successive pearls (circles) constrained to a certain distance. The top pearl was fixed in place and the system was allowed to settle with gravity. For comparison, the syntractrix of Poleni (red) is shown.

You can run the simulation by obtaining matter.min.js and by putting this source code into the body of an HTML file:

<div id='simulationBox1'></div>
<div id='simulationInfo1'></div>
<div id='simulationInfo2'></div>
<script src="/matter.min.js" type="text/javascript"></script>
<script type="text/javascript">
var particleEngine = Matter.Engine.create(document.body, {render: {element:document.getElementById("simulationBox1"), options: {wireframes: true, showAngleIndicator: false}}, constraintIterations:300, positionIterations:20, timing:{timeScale: 0.1}});
var N = 100; // Number of pearls
var S = 5; // Pearl radius
var L = 10; // Link length
var M = 730; // Number of filling particles (try 730)
document.getElementById('simulationInfo1').innerHTML='<b>Simulation 1</b><br />Number of pearls: N = '+N+'<br />Pearl radius: S = '+S+'<br /> Link length: L = '+L+'<br /> Filling particle count: M = '+ M;
particleEngine.world.gravity.y = 0.04; // try 0.04
var stack = Matter.Composite.create();
for (var i = 0; i < M; i++) {
Matter.Composite.add(stack, Matter.Bodies.circle(400+Matter.Common.random(-N*L/Math.PI/3, N*L/Math.PI/3), 15+N*L/Math.PI/2+Matter.Common.random(-N*L/Math.PI/3, N*L/Math.PI/3), Matter.Common.random(2, 8), { friction: 0, restitution: 0, density: 1, collisionFilter: {category: 1}}));
};
var bridge = Matter.Composite.create();
for (var i = 0; i < N; i++) {
Matter.Composite.add(bridge, Matter.Bodies.circle(400 + N*L/(Math.PI*2)*Math.sin(2*Math.PI*i/N), 15+N*L/(Math.PI*2) - N*L/(Math.PI*2)*Math.cos(2*Math.PI*i/N), S, {friction: 0, restitution: 0, density:0.5, collisionFilter: {category: 2, mask: 1}, isStatic: i == 0}));
}
for (var i = 0; i < N; i++) {
Matter.World.add(particleEngine.world, Matter.Constraint.create({bodyA: bridge.bodies[i], pointA: { x: 0, y: 0 }, bodyB: bridge.bodies[(i+1)%N], pointB: { x: 0, y: 0 }, stiffness:7, length:L,render:{strokeStyle:'#00ffff'}}));
}
stack,
bridge,
Matter.Bodies.rectangle(400, -40, 800, 10, { isStatic: true })
]);
Matter.Events.on(particleEngine.render, "afterRender", function(a){
var str = 'Circumference:';
var checksum = 0;
var len = 0;
for (var i = 0; i < N; i++) {
len += Math.sqrt(Math.pow(bridge.bodies[i].position.x-bridge.bodies[(i+1)%N].position.x, 2) + Math.pow(bridge.bodies[i].position.y-bridge.bodies[(i+1)%N].position.y, 2));
}
var x0 = bridge.bodies[0].position.x-bridge.bodies[1].position.x;
var y0 = bridge.bodies[0].position.y-bridge.bodies[1].position.y;
var x1 = bridge.bodies[0].position.x-bridge.bodies[N-1].position.x;
var y1 = bridge.bodies[0].position.y-bridge.bodies[N-1].position.y;
str += ' '+len.toString()+'<br /> Tail tip angle (degrees): '+(((Math.atan2(y1, x1) - Math.atan2(y0, x0))*180/Math.PI + 360)%360).toString()+'<p />';
document.getElementById('simulationInfo2').innerHTML=str;
});
var lemniscate = Matter.Composite.create()
var trix = Matter.Composite.create()
for (var i = 0; i < N; i++) {
var s = 1.9150080481545374814*(2.0*i/(N)-1);
Matter.Composite.add(trix, Matter.Bodies.circle(400 + L*N*(s - 2*Math.tanh(s))/3.8295479369488985, 15 + L*N*(2/Math.cosh(s) - 0.57683981788998291629)/3.8295479369488985, 1, {isStatic: true}));
}
for (var i = 0; i < N; i++) {
}
Matter.Engine.run(particleEngine);
</script>


I actually have difficulties getting a more droopy teardrop from the simulation as a void begins to form on top of the particles (Fig. 3). However I don't think Poleni's syntractrix is the right shape for the droplet filled so that there is no pressure at the tip of the tail, because the sign of the curvature of Poleni's syntractrix is the same everywhere on it and doesn't go to zero at the tip of the tail.

Figure 3. Reducing the number of filling particles (M) from 730 to 700 (left, also you can view the simulation here) and 670 (right) forms a progressively larger void at the tip. The simulation was run for several hours of real world time.

Logs surrounded by a long log boom pulled by a tug boat also organize similarly, for example: http://www.histoireforestiereoutaouais.ca/en/wp-content/uploads/2013/08/c15-11.jpg.

• That is a really neat tool! There's no way to get an equation from in though, is there? – ericksonla Mar 1 '16 at 17:02
• Within matter.js, the best you can do is get a list of the coordinates of the bag (bridge) elements. It would be more accurate to use a solver for the differential equation. – Olli Niemitalo Mar 1 '16 at 17:31

This involves physics of equilibrium to form an ODE which decides its shape.

Assumptions are: Bag is full, does not stretch, too long compared to height, force per unit length $N$ a.k.a. surface tension is proportional to height of water (of density $\gamma$) gravity load column above it, the hydraulic pressure is proportional to vertical depth (y) only, $\kappa$ membrane curvature.. and the like. Equilibrium requires

$$N \kappa = p = \gamma \, y, \; \; \; \frac {y''}{(1+y'^2)^{3/2}} = k y$$

Integration leads to $Elastica$ shape. At the support point there is no depth of water weighing down on it so it is straight as you expected. Deeper down shape is described by elliptic integrals. At the deepest symmetry point $y^{'}$ is zero, so is a parabola locally.

The ODE gives insight as to its shape. Where the water level stops there and above that the bag is straight.

In Mechanics of materials text-book Den Hartog mentions shapes of heavy mercury drops once adopted for construction of large water tanks.

EDIT1:

To an extent, the static equilibrium balance between a helium filled lighter than air balloons floating in air is quite similar. They accordingly have an upside down shape of a teardrop.

EDIT 2:

The balloon gets meridian shape below when curvature changes along axis of symmetry per $\kappa = 6 ( z -0.7):$

• Thanks! This looks like just what I was looking for. What is kappa? y is the horizontal distance from the axis of symmetry? Also, do you know of a source I could cite for that equation? – ericksonla Mar 1 '16 at 17:05
• kappa is curvature, y depth from bottom of symmetric body. These are from topic "pressure loaded membrane shells" – Narasimham Mar 1 '16 at 18:55

If you want something that looks like a drop but is not physically based, try the implicit equation $ax^2-(1-y)^3(1+y)=0$. The shape varies a little with $a$. Here it is for $a=4$, courtesy of WA.

• – lhf Mar 1 '16 at 19:05