Обновить

Додекаэдр из символов для мини-игры "Игра с Нулём»".

Бросаешь 12-гранный кубик: на 11 гранях - ресурсы, а на одной - полное обнуление прогресса в основной игре. Рискнули бы?

Координаты вершин додекаэдра со списком ребер и граней сходу не нашел. Вычислял сам. Если будет полезно, то вот массивы и вычисления для додекаэдра, вписанного в сферу единичного радиуса.

        // Verteсes
        Vector3[] verts = new Vector3[] {
            new Vector3(0.577350f, 0.577350f, 0.577350f),   // v1
            new Vector3(0.577350f, 0.577350f, -0.577350f),  // v2
            new Vector3(0.577350f, -0.577350f, 0.577350f),  // v3
            new Vector3(0.577350f, -0.577350f, -0.577350f), // v4
            new Vector3(-0.577350f, 0.577350f, 0.577350f),  // v5
            new Vector3(-0.577350f, 0.577350f, -0.577350f), // v6
            new Vector3(-0.577350f, -0.577350f, 0.577350f), // v7
            new Vector3(-0.577350f, -0.577350f, -0.577350f),// v8
            new Vector3(0, 0.934172f, 0.356822f),           // v9
            new Vector3(0, 0.934172f, -0.356822f),          // v10
            new Vector3(0, -0.934172f, 0.356822f),          // v11
            new Vector3(0, -0.934172f, -0.356822f),         // v12
            new Vector3(0.356822f, 0, 0.934172f),           // v13
            new Vector3(0.356822f, 0, -0.934172f),          // v14
            new Vector3(-0.356822f, 0, 0.934172f),          // v15
            new Vector3(-0.356822f, 0, -0.934172f),         // v16
            new Vector3(0.934172f, 0.356822f, 0),           // v17
            new Vector3(0.934172f, -0.356822f, 0),          // v18
            new Vector3(-0.934172f, 0.356822f, 0),          // v19
            new Vector3(-0.934172f, -0.356822f, 0)          // v20
        };

        // Calc edges
        const float edgeLength = 0.7136f;
        const float epsilon = 0.0001f;
        var edges = new List<(int a, int b)>();
        Vector3 v1, v2;
        float dx, dy, dz, dist;

        // Check all pairs of vertices
        for (int i = 0; i < verts.Length; i++)
            for (int j = i + 1; j < verts.Length; j++) {
                v1 = verts[i];
                v2 = verts[j];
                dx = v2.x - v1.x;
                dy = v2.y - v1.y;
                dz = v2.z - v1.z;
                dist = Mathf.Sqrt(dx * dx + dy * dy + dz * dz);
                if (Mathf.Abs(dist - edgeLength) < epsilon) 
                    edges.Add((i, j));
            }

        // Faces
        int[,] facesIDS = new int[12, 5] {
            { 0, 16, 1, 9, 8 },
            { 12, 0, 16, 17, 2 },
            { 8, 0, 12, 14, 4 },
            { 1, 16, 17, 3, 13 },
            { 9, 1, 13, 15, 5 },
            { 10, 11, 3, 17, 2 },
            { 2, 12, 14, 6, 10 },
            { 3, 11, 7, 15, 13 },
            { 6, 14, 4, 18, 19 },
            { 4, 8, 9, 5, 18 },
            { 5, 15, 7, 19, 18 },
            { 6, 19, 7, 11, 10 }};

Сделал и возвращаюсь к допилу версии для плейтеста. Чуть-чуть осталось. Заходите добавить в желаемое и записаться на плейтест.

Теги:
Всего голосов 3: ↑2 и ↓1+3
Комментарии0

Найм в 2к26. Что меня удивило больше всего

В 2026 году решили расширить штат. Разместил вакансию, начался поиск.

За первые два дня после публикации вакансии пришло более 400 откликов. Это сумасшедшая цифра... Ладно, собрался, отфильтровал, осталось около 300. 

Начались собеседования, и именно на них я был сильно удивлён, ведь не так давно ситуация была другая…

Найм в 2к26. Что меня удивило больше всего

Публикации