Új hozzászólás Aktív témák

  • tboy93

    nagyúr

    Sziasztok! Jobb hely híján, ide írok a problémámmal. Processingről van szó, 3D grafika ~java nyelven. Nem is annyira nyelvspecifikus a kérdés. Aszteroidákat szeretnék létrehozni gömbökből oly módon, hogy egy-egy adott pontot random eltolok.

    Lehet hogy csak este van, de sehogy sem akar összejönni :(((

    abstract class Asteroid {
    float detail;
    float r;

    PVector GetNormal(float u, float v)
    {
    PVector pos = GetPosition(u, v);
    pos.normalize();
    return pos;
    }

    PVector GetPosition(float u, float v)
    {
    u *= 2*3.14159265;
    v *= 3.14159265;

    return new PVector(
    r * sin(v) * cos(u),
    r * cos(v),
    r * sin(v) * sin(u)
    );
    }

    void draw()
    {
    stroke(150, 150, 150);
    fill(125, 125, 125);
    beginShape(TRIANGLES);
    for (int i = 0; i < detail; ++i)
    {
    for (int j = 0; j < detail; ++j)
    {
    PVector p1 = GetPosition(i / detail, j / detail);
    PVector p2 = GetPosition((i+1) / detail, j / detail);
    PVector p3 = GetPosition(i / detail, (j+1) / detail);
    PVector p4 = GetPosition((i+1) / detail, (j+1) / detail);

    PVector n1 = GetNormal(i / detail, j / detail);
    PVector n2 = GetNormal((i+1) / detail, j / detail);
    PVector n3 = GetNormal(i / detail, (j+1) / detail);
    PVector n4 = GetNormal((i+1) / detail, (j+1) / detail);

    // Háromszög 1
    vertex(p1.x, p1.y, p1.z);
    normal(n1.x, n1.y, n1.z);
    vertex(p2.x, p2.y, p2.z);
    normal(n2.x, n2.y, n2.z);
    vertex(p3.x, p3.y, p3.z);
    normal(n3.x, n3.y, n3.z);

    // Háromszög 2
    vertex(p4.x, p4.y, p4.z);
    normal(n1.x, n1.y, n1.z);
    vertex(p3.x, p3.y, p3.z);
    normal(n3.x, n3.y, n3.z);
    vertex(p2.x, p2.y, p2.z);
    normal(n2.x, n2.y, n2.z);
    }
    }
    endShape();
    }
    }

    Már azzal, hogy alacsony a detail, egészen aszteroida szerű valamiket kapok, de így ugye még nem egyediek.

Új hozzászólás Aktív témák

Hirdetés