1. C# / Говнокод #19422

    +5

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    var pts = new Vector3[vCount];
    var r = new Random();
    
    for (var i = 0; i < pts.Length; i++)
    pts[i] = new Vector3(r.Next(-10000, 10000), r.Next(-600, 600), r.Next(-10000, 10000)) * 0.05f;
    /*for (var i = 0; i < pts.Length; i++)
    for (var j = 0; j < pts.Length; j++)
    if (pts[i].X > pts[j].X)
    {
    var tmp = pts[i];
    pts[i] = pts[j];
    pts[j] = tmp;
    }*/
    var vertices = new VertexPositionColor[vCount];
    var indices = new int[vCount * 6];
    //*
    for (var i = 0; i < vCount; i++)
    {
    vertices[i] = new VertexPositionColor(pts[i], new Color(new Vector3(r.Next(-100000, 100000), r.Next(-100000, 100000), r.Next(-100000, 100000)) * 0.00001f));
    indices[i * 6] = i;
    indices[i * 6 + 3] = i;
    var minDist = new float[] { 100000000, 100000000, 100000000 };
    var minId = new int[] { 0, 0, 0 };
    for (var j = 0; j < vCount; j++)
    {
    if (j == i) continue;
    var dist = Vector3.DistanceSquared(pts[i], pts[j]);
    if (dist < minDist[0])
    {
    minDist[2] = minDist[1]; minId[2] = minId[1];
    minDist[1] = minDist[0]; minId[1] = minId[0];
    minDist[0] = dist; minId[0] = j;
    }
    else if (dist < minDist[1])
    {
    minDist[2] = minDist[1]; minId[2] = minId[1];
    minDist[1] = dist; minId[1] = j;
    }
    else if (dist < minDist[2])
    {
    minDist[2] = dist;
    minId[2] = j;
    }
    }
    indices[i * 6 + 1] = minId[0];
    indices[i * 6 + 2] = minId[1];
    indices[i * 6 + 4] = minId[1];
    indices[i * 6 + 5] = minId[2];
    }//*/

    Антон, 20 лет.

    Особенно вставило

    indices[i * 6 + 1] = minId[0];
    indices[i * 6 + 2] = minId[1];
    indices[i * 6 + 4] = minId[1];
    indices[i * 6 + 5] = minId[2];

    Запостил: d_fomenok, 09 Февраля 2016

    Комментарии (8) RSS

    • Этот человек ещё говорит что он бог кода и его код идеален
      Ответить
    • > indices[i * 6 + 1] = minId[0];
      Да ладно, чел тут не особо виноват. Создание геометрии кодом всегда выглядит как говно, как ты его не напиши... Поэтому часто проще нарисовать нужную херню в блендере, экспортнуть её в какой-нибудь obj и не париться.
      Ответить
      • Он любитель писать велосипеды. Это не его путь -- не париться
        Ответить
    • Хм, а чё, если взять месиво точек, найти для каждой 3 ближайших и составить из каждой такой четвёрки пару треугольников, то получится что-то кошерное и красивое? Имхо, выйдет только странная дырявая каша из треугольников ;(

      Вроде как нормальную оболочку построить намного сложнее...
      Ответить
    • //*/


      А вот это вообще классная штука
      Ответить
      • Я тоже такое юзал, пока про хоткей, который блок комментит, не узнал.
        Ответить
        • а прикол в другом. Когда софт глубоко тестовый и там комент на коменте, четко видно какая из закомментированных строк относится к какому из блоков.

          Я вообще иногда пишу
          /*//=====================
          что-то в таком духе
          //*///====================
          Ответить
      • гугл кодинг гайдлайны плохого не посоветуют )
        Ответить

    Добавить комментарий