Rainbow Voronoi on a Sphere: midpoints and spherical regions
Loading the math board and drawing, please wait…
This example demonstrates how to build a “rainbow” Voronoi-style partition on the surface of a sphere. Each point on the sphere is assigned to a region according to its distance/metric relationship to multiple site points, producing colored layers with piecewise-defined boundaries that visibly change as the governing conditions vary. The main mathematical ideas are spherical geometry, Voronoi (Dirichlet) partitioning, midpoint/median-value constructions on the sphere, angle-related measurements, and the emergence of intersection boundaries from competing region constraints. Construction highlights: using Sequence and Zip to generate and organize multiple spherical objects/sites and their parameter sets in bulk, Midpoint to compute midpoint-based references for boundary formation, and Sphere to define the spherical surface on which all regions and their separating curves are drawn. Suitable for middle school through undergraduate geometry visualization, and for instruction/practice in computational geometry and geometric constructions.
GeoGebra Commands & Parameters
Sequence(1, M) → LmZip("sphere" + (Text[m]), m, Lm) → SnameZip("C" + (Text[m]), m, Lm) → PnameZip((Px(k), Py(k), Pz(k)), k, Lm) → PsMidpoint(Element[Ps, 1], (0, 0, 0)) → C1Sphere(C1, 1 / 2) → sphere1Midpoint(Element[Ps, 2], (0, 0, 0)) → C2Sphere(C2, 1 / 2) → sphere2Midpoint(Element[Ps, 3], (0, 0, 0)) → C3Sphere(C3, 1 / 2) → sphere3Midpoint(Element[Ps, 4], (0, 0, 0)) → C4Sphere(C4, 1 / 2) → sphere4Midpoint(Element[Ps, 5], (0, 0, 0)) → C5Sphere(C5, 1 / 2) → sphere5Midpoint(Element[Ps, 6], (0, 0, 0)) → C6Sphere(C6, 1 / 2) → sphere6Midpoint(Element[Ps, 7], (0, 0, 0)) → C7Sphere(C7, 1 / 2) → sphere7Midpoint(Element[Ps, 8], (0, 0, 0)) → C8Sphere(C8, 1 / 2) → sphere8Midpoint(Element[Ps, 9], (0, 0, 0)) → C9Sphere(C9, 1 / 2) → sphere9Midpoint(Element[Ps, 10], (0, 0, 0)) → C10Sphere(C10, 1 / 2) → sphere10Midpoint(Element[Ps, 11], (0, 0, 0)) → C11Sphere(C11, 1 / 2) → sphere11Midpoint(Element[Ps, 12], (0, 0, 0)) → C12Sphere(C12, 1 / 2) → sphere12Midpoint(Element[Ps, 13], (0, 0, 0)) → C13Sphere(C13, 1 / 2) → sphere13Midpoint(Element[Ps, 14], (0, 0, 0)) → C14Sphere(C14, 1 / 2) → sphere14Midpoint(Element[Ps, 15], (0, 0, 0)) → C15Sphere(C15, 1 / 2) → sphere15Midpoint(Element[Ps, 16], (0, 0, 0)) → C16Sphere(C16, 1 / 2) → sphere16Midpoint(Element[Ps, 17], (0, 0, 0)) → C17Sphere(C17, 1 / 2) → sphere17Midpoint(Element[Ps, 18], (0, 0, 0)) → C18Sphere(C18, 1 / 2) → sphere18Midpoint(Element[Ps, 19], (0, 0, 0)) → C19Sphere(C19, 1 / 2) → sphere19Midpoint(Element[Ps, 20], (0, 0, 0)) → C20Sphere(C20, 1 / 2) → sphere20Midpoint(Element[Ps, 21], (0, 0, 0)) → C21Sphere(C21, 1 / 2) → sphere21Midpoint(Element[Ps, 22], (0, 0, 0)) → C22Sphere(C22, 1 / 2) → sphere22Midpoint(Element[Ps, 23], (0, 0, 0)) → C23Sphere(C23, 1 / 2) → sphere23Midpoint(Element[Ps, 24], (0, 0, 0)) → C24Sphere(C24, 1 / 2) → sphere24Midpoint(Element[Ps, 25], (0, 0, 0)) → C25Sphere(C25, 1 / 2) → sphere25Midpoint(Element[Ps, 26], (0, 0, 0)) → C26Sphere(C26, 1 / 2) → sphere26Midpoint(Element[Ps, 27], (0, 0, 0)) → C27Sphere(C27, 1 / 2) → sphere27Midpoint(Element[Ps, 28], (0, 0, 0)) → C28Sphere(C28, 1 / 2) → sphere28Midpoint(Element[Ps, 29], (0, 0, 0)) → C29Sphere(C29, 1 / 2) → sphere29Midpoint(Element[Ps, 30], (0, 0, 0)) → C30Sphere(C30, 1 / 2) → sphere30Midpoint(Element[Ps, 31], (0, 0, 0)) → C31Sphere(C31, 1 / 2) → sphere31Midpoint(Element[Ps, 32], (0, 0, 0)) → C32Sphere(C32, 1 / 2) → sphere32Midpoint(Element[Ps, 33], (0, 0, 0)) → C33Sphere(C33, 1 / 2) → sphere33Midpoint(Element[Ps, 34], (0, 0, 0)) → C34Sphere(C34, 1 / 2) → sphere34Midpoint(Element[Ps, 35], (0, 0, 0)) → C35Sphere(C35, 1 / 2) → sphere35Midpoint(Element[Ps, 36], (0, 0, 0)) → C36Sphere(C36, 1 / 2) → sphere36Midpoint(Element[Ps, 37], (0, 0, 0)) → C37Sphere(C37, 1 / 2) → sphere37Midpoint(Element[Ps, 38], (0, 0, 0)) → C38Sphere(C38, 1 / 2) → sphere38Midpoint(Element[Ps, 39], (0, 0, 0)) → C39Sphere(C39, 1 / 2) → sphere39Midpoint(Element[Ps, 40], (0, 0, 0)) → C40Sphere(C40, 1 / 2) → sphere40Midpoint(Element[Ps, 41], (0, 0, 0)) → C41Sphere(C41, 1 / 2) → sphere41Midpoint(Element[Ps, 42], (0, 0, 0)) → C42Sphere(C42, 1 / 2) → sphere42Midpoint(Element[Ps, 43], (0, 0, 0)) → C43Sphere(C43, 1 / 2) → sphere43Midpoint(Element[Ps, 44], (0, 0, 0)) → C44Sphere(C44, 1 / 2) → sphere44Midpoint(Element[Ps, 45], (0, 0, 0)) → C45Sphere(C45, 1 / 2) → sphere45Midpoint(Element[Ps, 46], (0, 0, 0)) → C46Sphere(C46, 1 / 2) → sphere46Midpoint(Element[Ps, 47], (0, 0, 0)) → C47Sphere(C47, 1 / 2) → sphere47Midpoint(Element[Ps, 48], (0, 0, 0)) → C48Sphere(C48, 1 / 2) → sphere48Midpoint(Element[Ps, 49], (0, 0, 0)) → C49Sphere(C49, 1 / 2) → sphere49Midpoint(Element[Ps, 50], (0, 0, 0)) → C50Sphere(C50, 1 / 2) → sphere50Midpoint(Element[Ps, 51], (0, 0, 0)) → C51Sphere(C51, 1 / 2) → sphere51Midpoint(Element[Ps, 52], (0, 0, 0)) → C52Sphere(C52, 1 / 2) → sphere52Midpoint(Element[Ps, 53], (0, 0, 0)) → C53Sphere(C53, 1 / 2) → sphere53Midpoint(Element[Ps, 54], (0, 0, 0)) → C54Sphere(C54, 1 / 2) → sphere54Midpoint(Element[Ps, 55], (0, 0, 0)) → C55Sphere(C55, 1 / 2) → sphere55Midpoint(Element[Ps, 56], (0, 0, 0)) → C56Sphere(C56, 1 / 2) → sphere56Midpoint(Element[Ps, 57], (0, 0, 0)) → C57Sphere(C57, 1 / 2) → sphere57Midpoint(Element[Ps, 58], (0, 0, 0)) → C58Sphere(C58, 1 / 2) → sphere58Midpoint(Element[Ps, 59], (0, 0, 0)) → C59Sphere(C59, 1 / 2) → sphere59Midpoint(Element[Ps, 60], (0, 0, 0)) → C60Sphere(C60, 1 / 2) → sphere60Midpoint(Element[Ps, 61], (0, 0, 0)) → C61Sphere(C61, 1 / 2) → sphere61Midpoint(Element[Ps, 62], (0, 0, 0)) → C62Sphere(C62, 1 / 2) → sphere62Midpoint(Element[Ps, 63], (0, 0, 0)) → C63Sphere(C63, 1 / 2) → sphere63Midpoint(Element[Ps, 64], (0, 0, 0)) → C64Sphere(C64, 1 / 2) → sphere64Midpoint(Element[Ps, 65], (0, 0, 0)) → C65Sphere(C65, 1 / 2) → sphere65Midpoint(Element[Ps, 66], (0, 0, 0)) → C66Sphere(C66, 1 / 2) → sphere66Midpoint(Element[Ps, 67], (0, 0, 0)) → C67Sphere(C67, 1 / 2) → sphere67Midpoint(Element[Ps, 68], (0, 0, 0)) → C68Sphere(C68, 1 / 2) → sphere68Midpoint(Element[Ps, 69], (0, 0, 0)) → C69Sphere(C69, 1 / 2) → sphere69Midpoint(Element[Ps, 70], (0, 0, 0)) → C70Sphere(C70, 1 / 2) → sphere70Midpoint(Element[Ps, 71], (0, 0, 0)) → C71Sphere(C71, 1 / 2) → sphere71Midpoint(Element[Ps, 72], (0, 0, 0)) → C72Sphere(C72, 1 / 2) → sphere72Midpoint(Element[Ps, 73], (0, 0, 0)) → C73Sphere(C73, 1 / 2) → sphere73Midpoint(Element[Ps, 74], (0, 0, 0)) → C74Sphere(C74, 1 / 2) → sphere74Midpoint(Element[Ps, 75], (0, 0, 0)) → C75Sphere(C75, 1 / 2) → sphere75Midpoint(Element[Ps, 76], (0, 0, 0)) → C76Sphere(C76, 1 / 2) → sphere76Midpoint(Element[Ps, 77], (0, 0, 0)) → C77Sphere(C77, 1 / 2) → sphere77Midpoint(Element[Ps, 78], (0, 0, 0)) → C78Sphere(C78, 1 / 2) → sphere78Midpoint(Element[Ps, 79], (0, 0, 0)) → C79Sphere(C79, 1 / 2) → sphere79Midpoint(Element[Ps, 80], (0, 0, 0)) → C80Sphere(C80, 1 / 2) → sphere80Midpoint(Element[Ps, 81], (0, 0, 0)) → C81Sphere(C81, 1 / 2) → sphere81Midpoint(Element[Ps, 82], (0, 0, 0)) → C82Sphere(C82, 1 / 2) → sphere82Midpoint(Element[Ps, 83], (0, 0, 0)) → C83Sphere(C83, 1 / 2) → sphere83Midpoint(Element[Ps, 84], (0, 0, 0)) → C84Sphere(C84, 1 / 2) → sphere84Midpoint(Element[Ps, 85], (0, 0, 0)) → C85Sphere(C85, 1 / 2) → sphere85Midpoint(Element[Ps, 86], (0, 0, 0)) → C86Sphere(C86, 1 / 2) → sphere86Midpoint(Element[Ps, 87], (0, 0, 0)) → C87Sphere(C87, 1 / 2) → sphere87Midpoint(Element[Ps, 88], (0, 0, 0)) → C88Sphere(C88, 1 / 2) → sphere88Midpoint(Element[Ps, 89], (0, 0, 0)) → C89Sphere(C89, 1 / 2) → sphere89Midpoint(Element[Ps, 90], (0, 0, 0)) → C90Sphere(C90, 1 / 2) → sphere90Midpoint(Element[Ps, 91], (0, 0, 0)) → C91Sphere(C91, 1 / 2) → sphere91Midpoint(Element[Ps, 92], (0, 0, 0)) → C92Sphere(C92, 1 / 2) → sphere92Midpoint(Element[Ps, 93], (0, 0, 0)) → C93Sphere(C93, 1 / 2) → sphere93Midpoint(Element[Ps, 94], (0, 0, 0)) → C94Sphere(C94, 1 / 2) → sphere94Midpoint(Element[Ps, 95], (0, 0, 0)) → C95Sphere(C95, 1 / 2) → sphere95Midpoint(Element[Ps, 96], (0, 0, 0)) → C96Sphere(C96, 1 / 2) → sphere96Midpoint(Element[Ps, 97], (0, 0, 0)) → C97Sphere(C97, 1 / 2) → sphere97Midpoint(Element[Ps, 98], (0, 0, 0)) → C98Sphere(C98, 1 / 2) → sphere98Midpoint(Element[Ps, 99], (0, 0, 0)) → C99Sphere(C99, 1 / 2) → sphere99Midpoint(Element[Ps, 100], (0, 0, 0)) → C100Sphere(C100, 1 / 2) → sphere100Midpoint(Element[Ps, 101], (0, 0, 0)) → C101Sphere(C101, 1 / 2) → sphere101Midpoint(Element[Ps, 102], (0, 0, 0)) → C102Sphere(C102, 1 / 2) → sphere102Midpoint(Element[Ps, 103], (0, 0, 0)) → C103Sphere(C103, 1 / 2) → sphere103Midpoint(Element[Ps, 104], (0, 0, 0)) → C104Sphere(C104, 1 / 2) → sphere104Midpoint(Element[Ps, 105], (0, 0, 0)) → C105Sphere(C105, 1 / 2) → sphere105Midpoint(Element[Ps, 106], (0, 0, 0)) → C106Sphere(C106, 1 / 2) → sphere106Midpoint(Element[Ps, 107], (0, 0, 0)) → C107Sphere(C107, 1 / 2) → sphere107Midpoint(Element[Ps, 108], (0, 0, 0)) → C108Sphere(C108, 1 / 2) → sphere108Midpoint(Element[Ps, 109], (0, 0, 0)) → C109Sphere(C109, 1 / 2) → sphere109Midpoint(Element[Ps, 110], (0, 0, 0)) → C110Sphere(C110, 1 / 2) → sphere110Midpoint(Element[Ps, 111], (0, 0, 0)) → C111Sphere(C111, 1 / 2) → sphere111Midpoint(Element[Ps, 112], (0, 0, 0)) → C112Sphere(C112, 1 / 2) → sphere112Midpoint(Element[Ps, 113], (0, 0, 0)) → C113Sphere(C113, 1 / 2) → sphere113Midpoint(Element[Ps, 114], (0, 0, 0)) → C114Sphere(C114, 1 / 2) → sphere114Midpoint(Element[Ps, 115], (0, 0, 0)) → C115Sphere(C115, 1 / 2) → sphere115Midpoint(Element[Ps, 116], (0, 0, 0)) → C116Sphere(C116, 1 / 2) → sphere116Midpoint(Element[Ps, 117], (0, 0, 0)) → C117Sphere(C117, 1 / 2) → sphere117Midpoint(Element[Ps, 118], (0, 0, 0)) → C118Sphere(C118, 1 / 2) → sphere118Midpoint(Element[Ps, 119], (0, 0, 0)) → C119Sphere(C119, 1 / 2) → sphere119Midpoint(Element[Ps, 120], (0, 0, 0)) → C120Sphere(C120, 1 / 2) → sphere120Midpoint(Element[Ps, 121], (0, 0, 0)) → C121Sphere(C121, 1 / 2) → sphere121Midpoint(Element[Ps, 122], (0, 0, 0)) → C122Sphere(C122, 1 / 2) → sphere122Midpoint(Element[Ps, 123], (0, 0, 0)) → C123Sphere(C123, 1 / 2) → sphere123Midpoint(Element[Ps, 124], (0, 0, 0)) → C124Sphere(C124, 1 / 2) → sphere124Midpoint(Element[Ps, 125], (0, 0, 0)) → C125Sphere(C125, 1 / 2) → sphere125Midpoint(Element[Ps, 126], (0, 0, 0)) → C126Sphere(C126, 1 / 2) → sphere126Midpoint(Element[Ps, 127], (0, 0, 0)) → C127Sphere(C127, 1 / 2) → sphere127Midpoint(Element[Ps, 128], (0, 0, 0)) → C128Sphere(C128, 1 / 2) → sphere128Midpoint(Element[Ps, 129], (0, 0, 0)) → C129Sphere(C129, 1 / 2) → sphere129Midpoint(Element[Ps, 130], (0, 0, 0)) → C130Sphere(C130, 1 / 2) → sphere130Midpoint(Element[Ps, 131], (0, 0, 0)) → C131Sphere(C131, 1 / 2) → sphere131Midpoint(Element[Ps, 132], (0, 0, 0)) → C132Sphere(C132, 1 / 2) → sphere132Midpoint(Element[Ps, 133], (0, 0, 0)) → C133Sphere(C133, 1 / 2) → sphere133Midpoint(Element[Ps, 134], (0, 0, 0)) → C134Sphere(C134, 1 / 2) → sphere134Midpoint(Element[Ps, 135], (0, 0, 0)) → C135Sphere(C135, 1 / 2) → sphere135Midpoint(Element[Ps, 136], (0, 0, 0)) → C136Sphere(C136, 1 / 2) → sphere136Midpoint(Element[Ps, 137], (0, 0, 0)) → C137Sphere(C137, 1 / 2) → sphere137Midpoint(Element[Ps, 138], (0, 0, 0)) → C138Sphere(C138, 1 / 2) → sphere138Midpoint(Element[Ps, 139], (0, 0, 0)) → C139Sphere(C139, 1 / 2) → sphere139Midpoint(Element[Ps, 140], (0, 0, 0)) → C140Sphere(C140, 1 / 2) → sphere140
AI Drawing Prompt Reference
In 3D, draw a sphere surface centered at the origin, and show a collection of spherical “midpoint layers” on the same view. Start from a given set of points on the sphere as sites. For each site, construct the midpoint between that site and the origin, then use each midpoint as the center of a sphere with a fixed radius (as in the example, 1/2). Render all these spheres together with the main sphere so that their intersections and implied separation curves create a rainbow Voronoi-like partition pattern whose boundaries emerge from competing region constraints.
The prompt above was compiled from the original drawing commands and is for reference only.