public static MeshDraft CubeOctahedron(float radius) { MeshDraft draft; var v = new List<Vector3>(12); float r = (1 / Mathf.Sqrt(2))*radius; v.Add(new Vector3(r, r, 0)); v.Add(new Vector3(0, r, r)); v.Add(new Vector3(0, r, -r)); v.Add(new Vector3(-r, r, 0)); v.Add(new Vector3(r, 0, -r)); v.Add(new Vector3(r, 0, r)); v.Add(new Vector3(-r, 0, -r)); v.Add(new Vector3(-r, 0, r)); v.Add(new Vector3(r, -r, 0)); v.Add(new Vector3(0, -r, r)); v.Add(new Vector3(0, -r, -r)); v.Add(new Vector3(-r, -r, 0)); draft = Triangle(v[0], v[2], v[1]); draft.Add(Triangle(v[3], v[1], v[2])); draft.Add(Triangle(v[0], v[5], v[4])); draft.Add(Triangle(v[0], v[1], v[5])); draft.Add(Triangle(v[1], v[7], v[5])); draft.Add(Triangle(v[7], v[1], v[3])); draft.Add(Triangle(v[7], v[3], v[6])); draft.Add(Triangle(v[3], v[2], v[6])); draft.Add(Triangle(v[6], v[2], v[4])); draft.Add(Triangle(v[2], v[0], v[4])); draft.Add(Triangle(v[5], v[8], v[4])); draft.Add(Triangle(v[5], v[9], v[8])); draft.Add(Triangle(v[5], v[7], v[9])); draft.Add(Triangle(v[9], v[7], v[11])); draft.Add(Triangle(v[11], v[7], v[6])); draft.Add(Triangle(v[6], v[10], v[11])); draft.Add(Triangle(v[6], v[4], v[10])); draft.Add(Triangle(v[10], v[4], v[8])); draft.Add(Triangle(v[8], v[9], v[10])); draft.Add(Triangle(v[10], v[9], v[11])); draft.name = "CubeOctahedron"; return draft; }
Determine Sides of a Cube of Radius 1: