Dear All, I hope this is not too off-topic. I need to know if there is already some ready-to-use SciPy algorithm (or at least if this is easy to implement or not). Consider a dimer, i.e. 2 spheres with a single contact point. This dimer can have any orientation in the 3D and I have the (x,y,z) coordinates of the centre of the 2 spheres. For a given orientation, I want to project the dimer on, let's say, the xy plane and evaluate the area of the surface of its projection. I spoke about a dimer since it is easy to start discussing a simple case, but in general I will deal with objects consisting of several non-overlapping spheres such that any sphere has at least a contact point with another sphere. Any suggestion is appreciated. Cheers Lorenzo
On Mon, Oct 1, 2012 at 10:34 AM, Lorenzo Isella <lorenzo.isella@gmail.com> wrote:
Dear All, I hope this is not too off-topic. I need to know if there is already some ready-to-use SciPy algorithm (or at least if this is easy to implement or not). Consider a dimer, i.e. 2 spheres with a single contact point. This dimer can have any orientation in the 3D and I have the (x,y,z) coordinates of the centre of the 2 spheres. For a given orientation, I want to project the dimer on, let's say, the xy plane and evaluate the area of the surface of its projection. I spoke about a dimer since it is easy to start discussing a simple case, but in general I will deal with objects consisting of several non-overlapping spheres such that any sphere has at least a contact point with another sphere.
There is nothing implemented in scipy for this. For the case of spheres projected (orthographically?) onto a plane, the shadows are probably-overlapping circles (the contact point is irrelevant). It looks like there is an analytical solution to the area of the intersection for circles: http://mathworld.wolfram.com/Circle-CircleIntersection.html You can probably just add up the areas of each circle, then subtract out one copy of each area of intersection to get the area of the union. -- Robert Kern
For the more general case, I would wager it has something to do with vector projection, which you can use to find the length of a "shadow" cast by a line. http://en.wikipedia.org/wiki/Vector_projection Your case would be a 3d generalization of it, but I'm sure that has been done somewhere... Kevin Gullikson On Mon, Oct 1, 2012 at 10:03 AM, Robert Kern <robert.kern@gmail.com> wrote:
On Mon, Oct 1, 2012 at 10:34 AM, Lorenzo Isella <lorenzo.isella@gmail.com> wrote:
Dear All, I hope this is not too off-topic. I need to know if there is already some ready-to-use SciPy algorithm (or at least if this is easy to implement or not). Consider a dimer, i.e. 2 spheres with a single contact point. This dimer can have any orientation in the 3D and I have the (x,y,z) coordinates of the centre of the 2 spheres. For a given orientation, I want to project the dimer on, let's say, the xy plane and evaluate the area of the surface of its projection. I spoke about a dimer since it is easy to start discussing a simple case, but in general I will deal with objects consisting of several non-overlapping spheres such that any sphere has at least a contact point with another sphere.
There is nothing implemented in scipy for this. For the case of spheres projected (orthographically?) onto a plane, the shadows are probably-overlapping circles (the contact point is irrelevant). It looks like there is an analytical solution to the area of the intersection for circles:
http://mathworld.wolfram.com/Circle-CircleIntersection.html
You can probably just add up the areas of each circle, then subtract out one copy of each area of intersection to get the area of the union.
-- Robert Kern _______________________________________________ SciPy-User mailing list SciPy-User@scipy.org http://mail.scipy.org/mailman/listinfo/scipy-user
participants (3)
-
Kevin Gullikson -
Lorenzo Isella -
Robert Kern