Beispiel #1
0
    void Start()
    {
        //10 adet random üçgen oluşturuldu.
        List <CreateTriangle> vertices = new List <CreateTriangle>();

        for (int i = 0; i < 10; i++)
        {
            CreateTriangle triangle = RandomTriangle(i);
            vertices.Add(triangle);
        }

        Color rndColor = Random.ColorHSV(0f, 1f, 1f, 1f, 0.5f, 1f);

        //Sıralanmadan önceki hali çizdirildi.
        vertices.ForEach(triangle => {
            Debug.DrawLine(triangle.Vector1, triangle.Vector2, rndColor, 100);
            Debug.DrawLine(triangle.Vector2, triangle.Vector3, rndColor, 100);
            Debug.DrawLine(triangle.Vector1, triangle.Vector3, rndColor, 100);
        });

        //Üçgenlerin açıları büyükten küçüğe göre sıralandı.
        vertices = vertices.OrderByDescending(triangle => triangle.MaxAngle).ToList <CreateTriangle>();

        Color rndColor2 = Random.ColorHSV(0f, 1f, 1f, 1f, 0.5f, 1f);

        //Üçgenlerin açılarına göre büyükten küçüğe olacak şekilde yeni pozisyonlarında çizdirildi.
        vertices = newTrianglesPosition(vertices);
        vertices.ForEach(triangle => {
            Debug.DrawLine(triangle.Vector1, triangle.Vector2, rndColor2, 100);
            Debug.DrawLine(triangle.Vector2, triangle.Vector3, rndColor2, 100);
            Debug.DrawLine(triangle.Vector1, triangle.Vector3, rndColor2, 100);
        });
    }
Beispiel #2
0
    public CreateTriangle RandomTriangle(int basePoint)
    {
        CreateTriangle vertices = new CreateTriangle();
        float          max      = 0.9f;
        float          min      = 0.1f;

        //Random 3 nokta oluşturuldu.En büyük kenar 1 birim olacak şekilde normalizasyon yapıldı.

        vertices.Vector1 = new Vector3(basePoint, 0, 0);
        vertices.Vector2 = new Vector3(basePoint + 1, 0, 0);
        vertices.Vector3 = new Vector3(Random.Range(min, max) + basePoint, Random.Range(min, max), Random.Range(0, 0));

        //Noktalar arasındaki açılar hesaplandı.
        float firstAngle  = Vector3.Angle(vertices.Vector1 - vertices.Vector2, vertices.Vector1 - vertices.Vector3);
        float secondAngle = Vector3.Angle(vertices.Vector2 - vertices.Vector1, vertices.Vector2 - vertices.Vector3);
        float thirdAngle  = Vector3.Angle(vertices.Vector3 - vertices.Vector1, vertices.Vector3 - vertices.Vector2);

        //En büyük açı hesaplandı.
        //En büyük birim 1 olduğu için her zaman bu kenarın karşısındaki yani 3. noktanın oluşturduğu açı en büyük açı olur.
        vertices.MaxAngle = Vector3.Angle(vertices.Vector3 - vertices.Vector1, vertices.Vector3 - vertices.Vector2);

        return(vertices);
    }