Exemple #1
0
    QuadVertices GetQuadVertices(List <List <Vector2> > markers)
    {
        float sum_x = 0;
        float sum_y = 0;
        int   k     = 0;

        for (int i = 0; i < markers.Count; i++)
        {
            List <Vector2> marker = markers[i];
            for (int j = 0; j < markers[i].Count; j++)
            {
                sum_x += markers[i][j].x;
                sum_y += markers[i][j].y;
                k++;
            }
        }

        float        avg_x        = sum_x / (k);
        float        avg_y        = sum_y / (k);
        Vector2      avg_vector   = new Vector2(-avg_x, -avg_y);
        QuadVertices quadVertices = new QuadVertices(avg_vector, avg_vector, avg_vector, avg_vector);


        for (int i = 0; i < markers.Count; i++)
        {
            List <Vector2> marker = markers[i];
            for (int j = 0; j < markers[i].Count; j++)
            {
                if (quadVertices.bottomLeft.x > -markers[i][j].x && quadVertices.bottomLeft.y > -markers[i][j].y)
                {
                    quadVertices.bottomLeft = -markers[i][j];
                }
                if (quadVertices.bottomRight.x < markers[i][j].x && quadVertices.bottomRight.y > -markers[i][j].y)
                {
                    quadVertices.bottomRight = -markers[i][j];
                }
                if (quadVertices.topRight.x < -markers[i][j].x && quadVertices.topRight.y < -markers[i][j].y)
                {
                    quadVertices.topRight = -markers[i][j];
                }
                if (quadVertices.topLeft.x > -markers[i][j].x && quadVertices.topLeft.y < -markers[i][j].y)
                {
                    quadVertices.topLeft = -markers[i][j];
                }
            }
        }
        return(quadVertices);
    }
Exemple #2
0
    void DrawQuad(int[] markersIds, List <List <Vector2> > markers, List <List <Vector2> > rejectedCandidates)
    {
        QuadVertices quadVectices = GetQuadVertices(markers);

        Vector3[] verticeList = new Vector3[4];
        verticeList[0] = new Vector3(quadVectices.bottomLeft.x, quadVectices.bottomLeft.y, 10);
        verticeList[1] = new Vector3(quadVectices.bottomRight.x, quadVectices.bottomRight.y, 10);
        verticeList[2] = new Vector3(quadVectices.topLeft.x, quadVectices.topLeft.y, 10);
        verticeList[3] = new Vector3(quadVectices.topRight.x, quadVectices.topRight.y, 10);

        quadMesh.vertices = verticeList;

        int[] triangles = new int[6];

        //  Lower left triangle.
        triangles[0] = 0;
        triangles[1] = 1;
        triangles[2] = 2;

        //  Upper right triangle.
        triangles[3] = 2;
        triangles[4] = 1;
        triangles[5] = 3;

        quadMesh.triangles = triangles;

        Vector3[] normals = new Vector3[4];

        normals[0] = Vector3.forward;
        normals[1] = Vector3.forward;
        normals[2] = Vector3.forward;
        normals[3] = Vector3.forward;

        quadMesh.normals = normals;

        Vector2[] uv = new Vector2[4];

        uv[0] = new Vector2(0f, 0f);
        uv[1] = new Vector2(1f, 0f);
        uv[2] = new Vector2(0f, 1f);
        uv[3] = new Vector2(1f, 1f);

        quadMesh.uv = uv;
    }