Distributing equidistant points on a sphere

Started by
17 comments, last by Origin 20 years, 9 months ago
Yeah, yohumbus, I''ve seen that before, it works very well, but it is of course approximate and asymetric.
You know what I never noticed before?
Advertisement
quote:Original post by oliii
it''s easy . Create an icosahedron (20 triangle faces, 12 vertices). get the midpoints of each edges, and link them. That will give you 4 smaller triangles of identical size. Keep doing that, and you''ll generate a sphere where all the neighbours are equidistant. However, some vertices will have 5 neighbours, not 6. Those vertices with 5 neighbours would be the vertices of the origina icosahedron.
Correct. That would restrict the possible values for N and yield different numbers of neighbours. It would fulful the equidistance condition, though.

quote:Original post by Yohumbus
Another way that I have seen on the pov-ray forums is by randomly scattering the points on the sphere then using electrostatic repultion(sp?) to push each node apart then normalize them to the sphere. I have never tried it but they said it converges pretty quickly.
You mean something like this, right?
That works good, but it sometimes yields seven neighbours.

Maybe one can tweak it until all points have six neighbours....
An approximation to a sphere forms a planar graph. Now looking at the formula:

V + F = E + 2

where:
V is the number of nodes or vertices.
F is the number of faces or regions.
E is the number of edges or arcs.

If you have N vertices then V = N.

If each vertex is connected to 6 others then the number of ends of arcs is 6N. Each arcs has 2 ends, so E = 3N.

Each vertex is a vertex of 6 faces. Now each face has 3 vertices. Therefore F = 2N.

N + 2N = 3N + 2
0 = 2. Oh dear, either I've got it wrong or your 'sphere' is impossible.


To clarify the F = 2N bit, each vertex is part of 6 corners. So the number of corners is 6N. As each face, which must be a triangle needs 3 corners, F = 2N

[edited by - higherspeed on July 4, 2003 2:19:09 PM]
quote:Original post by higherspeed
An approximation to a sphere forms a planar graph. Now looking at the formula:

V + F = E + 2

where:
V is the number of nodes or vertices.
F is the number of faces or regions.
E is the number of edges or arcs.

If you have N vertices then V = N.

If each vertex is connected to 6 others then the number of ends of arcs is 6N. Each arcs has 2 ends, so E = 3N.

Each vertex is a vertex of 6 faces. Now each face has 3 vertices. Therefore F = 2N.

N + 2N = 3N + 2
0 = 2. Oh dear, either I''ve got it wrong or your ''sphere'' is impossible.
Well, you got it right... This can''t be done.

With C being the number of connections:

V = N
E = (C/2)N
F = (C/3)N

N + (C/3)N = (C/2)N + 2

(1 - C/6) * N = 2

This excludes C > 5 and leaves possible values for N up to 12 (for C = 5), but not higher. That''s odd, but it''s true.

Can the sphere be done nonetheless if two points connect to only 5 instead of 6 neighboring points?
YES!

use an icosahedron, and recursively subdivide the edges through the middle. Splits the triangles into 4 smaller triangles, ect...

Everything is better with Metal.

quote:Original post by oliii
YES!

use an icosahedron, and recursively subdivide the edges through the middle. Splits the triangles into 4 smaller triangles, ect...
Is it exactly two points then?

Well, thanks a lot!
By symmetry arguments, you can''t just have 2 points with 5 neighbours.



As you can see from that limited angle you can see at least 2 points with 5 adjacent vertices. The first one is an icosahedron split once. The second is each tri spilt into 9 I think. The total number of points with 5 connections remains constant through spliting. I think that number''s twelve.

If I''ve misinterpreted the way you''ve split the icosahedron then I''m sorry.
no that''s right. the only points ending up with 5 neighbours will be the original points of the icosahedron. If you split the edges through the middle, the connectivity for those points will acutally never change.

However, the points that are the result of edges splited in two will be connected to 6 vertices. Each split-vertex will be connected to the other edges of the two triangles sharing that edge.

So, 2 connections to link the edge points to the mid-vertex, and 2 other connections per triangles, that will connect each mid-points of the triangles together. 6 connections in total.


// original tris// -------------               \ /             \ /               -+---------------+-               / \             /              /   \           /             /     \         /            /       \       /           /         \     /           /           \   /         /             \ /       -+---------------+-       / \             / \// calculate midpoints// -------------------               \ /             \ /               -+-------*-------+-               / \             /              /   \           /             /     \         /            *       *       *           /         \     /           /           \   /         /             \ /       -+-------*-------+-       / \             / \// link midpoints together// -----------------------               \ /     \ /     \ /               -+-------*-------+-               / \     / \     /              /   \   /   \   /            \/     \ /     \ /           -*-------*-------*-           / \     / \     / \          /   \   /   \   /         /     \ /     \ /       -+-------*-------+-       / \     / \     / \



the trick with the starting icosahedron, is that the first 12 vertices will be linked to only 5 vertices

                |               |                |               |                |               |            -----+---------------+------               / \             /               /   \           /             /     \         /            /       \       /           /         \     /           /           \   /         /             \ /    ----+---------------+------        |               |        |               |


that''s about it That would give you a near optimum sphere. But as demonstrated before, you can''t get a perfect sphere anyway.

Everything is better with Metal.

Yeah, I''ve already implemented the splitting.

I think I can live with 12 points being different. With many points, it doesn''t even matter anymore.

Thanks again.

This topic is closed to new replies.

Advertisement