Function to describe teardrop shape
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'}}));
}
Matter.World.add(particleEngine.world, [
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.World.add(particleEngine.world, Matter.Constraint.create({bodyA: trix.bodies[i], bodyB: trix.bodies[(i+1)%N],render:{strokeStyle:'#ff0000'}}));
}
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.
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): $
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.