From: rusin@vesuvius.math.niu.edu (Dave Rusin) Subject: Re: Simplicial Complexes and Barycentric Coordinates? Date: 19 Jan 1999 15:42:06 GMT Newsgroups: sci.math Keywords: Barycentric coordinates in complexes In article <77h5if$opd$1@nnrp1.dejanews.com>, wrote: >I have a triangulated mesh in R3 (3 should be superscripted) space. The mesh >M is denoted as the tuple M(K,V) where K is the simplicial complex >representing the mesh face, edge and vertex connectivity and V contains the >geometric locations of each vertex in the mesh. Assuming there are m vertices >in the mesh, V would contain m coordinates values. > >I need to calculate the barycentric coordinate vector for the point p (on the >mesh) that is closest to some arbitrary point x (not necessarily on the mesh). > >In the literature I'm reading, it suggests that one could project x onto >each of the faces in M and find the projection with the minimal distance. Well, each face is contained in some plane, which you may write in the form ax+by+cz=d where (a,b,c) is a unit vector. The distance from (x0,y0,z0) to this plane is then |ax0+by0+cz0-d|. So yes, you can easily enumerate all these distances and choose the minimal one. Unfortunately this isn't quite what you want: what you have calculated for each face is the distance to the ambient plane; if the perpendicular projection of your initial point lies somewhere else on the plane rather than in the interior of the simplex, then you haven't found the closest point. So what you'd really have to do for each face is 1. compute the perpendicular projection to the ambient plane 2. If that point is in the face, stop. Otherwise, for each edge 2a. compute the perpendicular projection to the ambient line 2b. If that point is in the edge, stop. Otherwise 2c. Compute the distance to each of the two endpoints; choose min. 2d. This is the distance to that edge 3. Min over all three edges is the distance to that face Examine all faces and choose the minimum point-to-face distance. Note that this isn't the most efficient procedure. For example, an edge where two or more faces meet would likely be multiply tested as step 2 is performed for each face. >I could interpret that to mean that for each face I need to calculate the >barycentric coordinate of x relative to that face and then take the distance >between...???? And that's where I get confused. I'm not sure what to calculate >the distance between when I have the barycentric coordinate of x relative to >some face. Does this even make sense? Can a point not on a face have a >barycentric coordinate relative to that face? No: barycentric coordinates only make sense for point in the affine span of the vertices. You can compute barycentric coordinates for points in this span which are outside the face; one or more of them will lie outside the interval [0,1]. But note that barycentric coordinates are not particularly well suited to distance computations (unless you incorporate the distances between the vertices into your calculations). >Another source of confusion for me has arisen from the definition of the >topological realization of K. Is it correct for me to assume that the >topological realization of K exists in an Rm (m should be superscripted) >space with each of the m geometric vertices corresponding one-to-one with the >basis vectors (which would be barycentric?) of that space? For example, if my >mesh has 4 vertices in it, then the basis vectors in the topological >realization would be (1,0,0,0), (0,1,0,0), (0,0,1,0) and (0,0,0,1). Thus, >each barycentric coordinate vector in K would be composed of 4 elements with >at most 3 of those elements non-zero. There would be 3 non-zero elements for >a point on a face, 2 for a point on an edge, and 1 for a point on a vertex. >Is this correct? Yes, any complex may be embedded into R^m in the way you describe. More appropriately, you can take this embedding as the _definition_ of the topology on the complex; then the question is whether or not the given map into R^3 is a homeomorphism. You need to check that none of the 1-cells pierce any of the 2-cells, for example, something which will occur with the correct topology on K (and something which is not entirely trivial to check given the proposed coordinates of the vertices). Again I suppose I should point out that the two embeddings into R^m and R^3 give different metrics on this space. dave PS -- If this is for a Playstation product, let me just mention that I have a 14-year-old son who wouldn't mind collecting free samples...