Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top


A bucket full of blood gets spilled over the floor. Question: What shape will the dried blood stains have?


The blood is modeled by a set of interacting particles (e.g. SPH). As time goes to infinity, the blood particles come to rest on the floor (we do not care about fluid-dynamics).

Therefore: A cloud of particles is in 3D space. The particles are clustered in multiple, different sized puddles.

My Solution

  1. Cluster the particles
  2. Generate a surface over each cluster
  3. Project the created surfaces onto the floor (a 2D plane)

The result is the shapes of the dried blood.

Finally the Question :-)

How would you solve the problem? Are there better/different ways? And what algorithms would you use for the different steps? (performance/ precision does not matter, I'm interested in general, what types of different algorithms exist :-)

Algorithm for:

  • Clustering the particles
  • Generating the surfaces (surface tension should be considered)
  • Projecting the objects

(please reference your answers)

PS: Any hints for related work/problems would also be appreciated

share|cite|improve this question
If you rather want some good looking images for your game you should better ask at than here - in most cases there are some "tricks" how you can produce some good looking blood without doing a mathematical simulation – Listing Jul 4 '12 at 9:41
I feel like this is a little too vague to be a mathematical question. – Rahul Jul 4 '12 at 12:10
@Rahul Maybe for pure mathematics, but it can surely be a good question for applied (and computational) mathematics where things are not so clearly defined. Maybe this is not the right forum? – Jonas Teuwen Jul 4 '12 at 12:38
up vote 4 down vote accepted

Your three step procedure is good. But I am afraid that it gives infinitely many possibilities. These are the following things that are to be considered.

  • The flow of the liquid ( I don't prefer using the word blood , which looks ugly ) , on to the floor that decides the forces acting on each module. Sometimes the slightest change in the input can cause a great variation in the output. See the butterfly effect.

  • You must consider the fluid dynamics of the liquid that play a major role. Buoyancy forces, resistance, surface tension etc., all these entities have a connection with the formation of the resultant shape. For example, if you pour a glass of water , you get another shape, if you pour a glass of honey, you get some other shape.

But anyway as per your request , I am suggestion you some algorithm that I read in my Database Administration Book. Its called Cluster Analysis . I hope that it will completely help you in clustering the particles.

I am sure that following your three way step will not yield you to a particular solution. It takes you to a infinite set of possibilities ( as shapes can be any in number ). But if you combine the Cluster Analysis with Fluid Dynamics and finally garnish the total thing with Chaotic dynamics and properties of fluid, you get the perfect and exact shape.

For that you need to consider the surface tension of the medium on which the liquid is poured. The rate of flow of liquid, initial injection velocity, viscosity and the buoyancy force offered by the medium.

Then you need to simulate the model of fluid flow, by taking the initial condition and then pop it into the fluid flow equation and then approximating the condition of the fluid after time $t$ ( with some negligible error ) . So after performing interpolation and curve fitting you get a function that approximately gives you the position of the cluster at time $t$. Then after doing that, you need to simulate the resultant positions of all clusters using the vector analysis and cancel the internal forces that are opposite.

Thats how you generate the entire model perfectly.

I hope this is helps you to some extent. Ask me for more mathematical details in case if you want.

Thank you.

share|cite|improve this answer
Please do ask if you want to hear more about a particular topic – Iyengar Jul 4 '12 at 10:07

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.