This question popped up today in our group meeting. Suppose you are given a cloud of N points in 2D and each is associated with a velocity vector. These points are associated with particles on a 2D interface and velocities are obtained via simple particle tracking.The interface we are studying is not clean in the sense that there are solid island spread over the liquid interface. As a results, some of the particles actually sit on the said islands while remaining ones are spread on the liquid interface. Here's the question: Given the velocity information can you determine and isolate the particles on the solid islands? I did a quick search but could not find anything useful but came up with a simple algorithm based on computing relative angular velocities between all particle pairs. If particle $\mathbf{p}_i$ and $\mathbf{p}_j$ belong to the same rigid body, then one can write:$$\mathbf{v}_j = \mathbf{v}_i + \Omega_{ij} \:\hat{\mathbf{k}} \times \mathbf{r}_{ji},$$where $\mathbf{r}_{ji} = \mathbf{r}_j - \mathbf{r}_i$ is the relative position. For any particle $\mathbf{p}_k$ that belongs to the same rigid body, one requires that $\Omega_{ik} = \Omega_{jk} = \Omega_{ij}$. Finally I detect the islands by generating a histogram of the matrix entries and looking of the peaks.Here is a sample made-up examples, were a bunch of random points are considered. Red and blue particles belong to two different rigid bodies with $\Omega_{red} = 5$ and $\Omega_{blue} = 10$. Black particles are assumed to be Brownian and have random velocities. As you can see the histogram detects two peaks at 5 and 10 but also fictitious peaks around 0.Can you think of a better algorithm or point me to some references?
Detect rigid body motions in a cloud of points
algorithms;simulation