Domanda

Ecco un problema che sto cercando di risolvere:

Ho una forma irregolare. Come farei per distribuire uniformemente 5 punti su questa forma in modo che la distanza tra ciascun punto sia uguale l'uno all'altro?

È stato utile?

Soluzione

questo è matematicamente impossibile. Funzionerà solo per un piccolo sottoinsieme di forme di base.

Esistono tuttavia alcune soluzioni che potresti provare:

  1. Approccio analitico. Inizia con un punto P0, crea una sfera attorno a P0 e intersecala con la forma di base, dandoti una serie di curve C0. Quindi crea un altro punto P1 da qualche parte su C0. Ancora una volta, crea una sfera attorno a P1 e intersecala con C0, dandoti una serie di punti C1, il tuo terzo punto P2 sarà uno dei punti in C1. E così via e così via. Questo approccio garantisce vincoli di distanza, ma dipende anche fortemente dalle condizioni iniziali.

  2. Approccio iterativo. Essenzialmente ricerca di forme. Si creano alcuni punti sull'oggetto e si creano anche molle tra quelle che condividono un vincolo di distanza. Quindi risolvi le forze elastiche e muovi i tuoi punti di conseguenza. Questo molto probabilmente li spingerà lontano dalla forma di base, quindi è necessario tirarli indietro sulla forma di base. Ripeti finché i punti non si spostano più o finché il vincolo di distanza non è stato soddisfatto entro la tolleranza.

  3. Approccio di campionamento. Converti la tua geometria di base in uno spazio voxel e inizia a scavare tutti i voxel che sono troppo vicini a un punto appena inserito. Questo ti assicura di non avere mai due punti troppo vicini tra loro, ma soffre anche di problemi di tolleranza (e probabilmente di prestazione).

Se puoi fornire maggiori informazioni sulla natura della tua geometria e dei tuoi vincoli, diventa possibile una risposta più specifica.

Altri suggerimenti

David dice che è impossibile, ma in realtà c'è una risposta fuori dal campo di sinistra: basta mettere tutti i tuoi punti uno sopra l'altro ! Avranno tutti la stessa distanza da tutti gli altri punti: zero.

In realtà, questo è l'unico algoritmo che ha una soluzione (cioè tutte le distanze a coppie sono uguali) indipendentemente dalla forma di input.

So che la domanda chiede di inserire i punti "uniformemente", ma poiché ciò non è definito formalmente, mi aspetto che sia stato solo un tentativo di spiegare "tutte le distanze a coppie sono uguali", nel qual caso la mia risposta è " , anche ".

L'unico modo per posizionare 5 punti ugualmente distanti tra loro (oltre alla banale soluzione di farli passare attraverso l'origine) è nello spazio dimensionale 4+. È matematicamente impossibile avere 5 oggetti equidistanti in 3D. Quattro è il massimo che puoi avere in 3D e quella forma è un tetraedro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top