Oddalone punkty na sześcianie

Muszę zainicjować niektóre punkty trójwymiarowe i chcę, aby były równomiernie rozmieszczone w sześcianie. Czy są jakieś kreatywne sposoby, aby to zrobić?

Używam iteracyjnego algorytmu maksymalizacji oczekiwań i chcę, aby moje początkowe wektory równomiernie obejmowały przestrzeń.

Załóżmy na przykład, że mam osiem punktów, które chcę umieścić równo w sześcianach o wymiarach 1x1x1. Chciałbym, aby punkty w rogach sześcianu miały długość boku 0,333, wyśrodkowane w obrębie większej kostki.

Przykład 2D jest poniżej. Zauważ, że czerwone punkty są jednakowo oddalone od siebie i krawędzi. Chcę tego samego dla 3D.

W przypadkach, w których liczba punktów nie ma liczby całkowitej w kostce, dobrze jest pozostawić pewne „luki” w układzie.

Obecnie biorę pierwiastek sześcienny liczby punktów i za jego pomocą obliczam liczbę punktów i żądaną odległość między nimi. Następnie przechodzę przez punkty i zwiększam współrzędne X, Y i Z (przesunięte tak, że Y nie zwiększa się, dopóki X nie powróci do 0, tak samo jak Z z uwzględnieniem Y).

Jeśli jest łatwy sposób na zrobienie tego w programie MATLAB, chętnie z niego skorzystam.

questionAnswers(5)

yourAnswerToTheQuestion