java - 如何画一个由四个三角形组成的正方形? (libgdx)

标签 java libgdx shapes

我有一个例子,我需要绘制由四个三角形组成的正方形,如下图所示:

enter image description here

三角形参数存储在 JDBC 中,我知道如何在 Libgdx 中绘制形状,但这种形状对我来说似乎有点棘手,任何有关如何执行此操作的帮助或任何想法将不胜感激。 (我不是要求为我编写代码)

最佳答案

这是一个简单的例子,我无法测试它,因为我现在无法访问 libgdx,但作为一个想法,我认为你可以提供帮助。

void draw(float x, float y, float width, float height, Color color) {


    if (idx==verts.length)
        flush();

    //assuming (0, 0) is lower left, and Y is up

    //bottom left vertex
    verts[idx++] = x;           //Position(x, y) 
    verts[idx++] = y;
    verts[idx++] = color.r;             //Color(r, g, b, a)
    verts[idx++] = color.g;
    verts[idx++] = color.b;
    verts[idx++] = color.a;

    //top left vertex
    verts[idx++] = x;           //Position(x, y) 
    verts[idx++] = y + height;
    verts[idx++] = color.r;             //Color(r, g, b, a)
    verts[idx++] = color.g;
    verts[idx++] = color.b;
    verts[idx++] = color.a;

    //bottom right vertex
    verts[idx++] = x + (width / 2);         //Position(x, y) 
    verts[idx++] = y + (height / 2);
    verts[idx++] = color.r;             //Color(r, g, b, a)
    verts[idx++] = color.g;
    verts[idx++] = color.b;
    verts[idx++] = color.a;
            //2
            //|\
            //| \ 3
            //| /
            //|/
            //1

    //
    verts[idx++] = x + width;       //Position(x, y) 
    verts[idx++] = y + height;
    verts[idx++] = color.r;             //Color(r, g, b, a)
    verts[idx++] = color.g;
    verts[idx++] = color.b;
    verts[idx++] = color.a;

    //
    verts[idx++] = x;           //Position(x, y) 
    verts[idx++] = y + height;
    verts[idx++] = color.r;             //Color(r, g, b, a)
    verts[idx++] = color.g;
    verts[idx++] = color.b;
    verts[idx++] = color.a;

    //
    verts[idx++] = x + (width / 2);         //Position(x, y) 
    verts[idx++] = y + (height / 2);
    verts[idx++] = color.r;             //Color(r, g, b, a)
    verts[idx++] = color.g;
    verts[idx++] = color.b;
    verts[idx++] = color.a;

            //2_____1
            // \   /
            //  \ /
            //   3
            //
            //

            //
    verts[idx++] = x + width;       //Position(x, y) 
    verts[idx++] = y;
    verts[idx++] = color.r;             //Color(r, g, b, a)
    verts[idx++] = color.g;
    verts[idx++] = color.b;
    verts[idx++] = color.a;

    //
    verts[idx++] = x + width;       //Position(x, y) 
    verts[idx++] = y + height;
    verts[idx++] = color.r;             //Color(r, g, b, a)
    verts[idx++] = color.g;
    verts[idx++] = color.b;
    verts[idx++] = color.a;

    //
    verts[idx++] = x + (width / 2);         //Position(x, y) 
    verts[idx++] = y + (height / 2);
    verts[idx++] = color.r;             //Color(r, g, b, a)
    verts[idx++] = color.g;
    verts[idx++] = color.b;
    verts[idx++] = color.a;

            //      2
            //     /|
            //   3/ |
            //    \ |
            //     \|
            //      1

    //
    verts[idx++] = x;                   //Position(x, y) 
    verts[idx++] = y;
    verts[idx++] = color.r;             //Color(r, g, b, a)
    verts[idx++] = color.g;
    verts[idx++] = color.b;
    verts[idx++] = color.a;

    //
    verts[idx++] = x + width;       //Position(x, y) 
    verts[idx++] = y;
    verts[idx++] = color.r;             //Color(r, g, b, a)
    verts[idx++] = color.g;
    verts[idx++] = color.b;
    verts[idx++] = color.a;

    //
    verts[idx++] = x + (width / 2);         //Position(x, y) 
    verts[idx++] = y + (height / 2);
    verts[idx++] = color.r;             //Color(r, g, b, a)
    verts[idx++] = color.g;
    verts[idx++] = color.b;
    verts[idx++] = color.a;

            //   3
            //  /\
            // /__\
            // 1  2 
    flush();
}

注意:当我写的时候,答案没有记住形状,这个例子是针对 libgdx 的网格。

只有您必须调整代码才能在每个三角形中绘制纹理,或为您的外观着色。

如果您需要更多代码以使其正常工作,请发表评论,如果可以的话我会告诉您。

如果没有,它对你有用,评论,我会删除

关于java - 如何画一个由四个三角形组成的正方形? (libgdx),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30066595/

相关文章:

java - 如何在附加条件下使用 Spring Data JPA 示例匹配器

java - 尽管在 list 中声明了 AdActivity 错误

java - Java公式中四舍五入到十没有意义

java - Fitviewport 错误的相机定位

android - Appodeal android示例错误

java - 在eclipse e4中水平排列checkboxtableviewer中的复选框

java - 从舞台上移除 Actor ?

java - 检查点数组是否位于矩形数组内?

java - 绘制任意边的形状

image-processing - 从一组随机线段中检测四边形形状