» »

Signed povrsina trikotnika (vektorji)

Signed povrsina trikotnika (vektorji)

Isotropic ::

zanima me, kako se dobi povrsina trikotnika v 3d prostoru s pomocjo vektorjev? mora biti pa signed, ker rabim ugotoviti, ali je trikotnik CCW ali CW.
oz. mi lahko kdo pojasno tole kodo, predvsem mi ni ravno jasno, kaj se dogaja v tisti for zanki, glede na to, da je n = 3 (tri vozlisca), j pa starta od 2 in se povecuje (sklepam, da se vsi indeksi povecajo naenkrat)


// area3D_Polygon(): computes the area of a 3D planar polygon
//    Input:  int n = the number of vertices in the polygon
//            Point* V = an array of n+2 vertices in a plane
//                       with V[n]=V[0] and V[n+1]=V[1]
//            Point N = unit normal vector of the polygon's plane
//    Return: the (float) area of the polygon
float
area3D_Polygon( int n, Point* V, Point N )
{
    float area = 0;
    float an, ax, ay, az;  // abs value of normal and its coords
    int   coord;           // coord to ignore: 1=x, 2=y, 3=z
    int   i, j, k;         // loop indices

    // select largest abs coordinate to ignore for projection
    ax = (N.x>0 ? N.x : -N.x);     // abs x-coord
    ay = (N.y>0 ? N.y : -N.y);     // abs y-coord
    az = (N.z>0 ? N.z : -N.z);     // abs z-coord

    coord = 3;                     // ignore z-coord
    if (ax > ay) {
        if (ax > az) coord = 1;    // ignore x-coord
    }
    else if (ay > az) coord = 2;   // ignore y-coord

    // compute area of the 2D projection
<strong>    for (i=1, j=2, k=0; i<=n; i++, j++, k++)
        switch (coord) {
        case 1:
            area += (V[i].y * (V[j].z - V[k].z));
            continue;</strong>
        case 2:
            area += (V[i].x * (V[j].z - V[k].z));
            continue;
        case 3:
            area += (V[i].x * (V[j].y - V[k].y));
            continue;
        }


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

tekstura [c++ opengl]

Oddelek: Programiranje
9923 (708) matej94
»

Linux Synaptics touchpad driverji

Oddelek: Operacijski sistemi
121117 (994) preem
»

python problem

Oddelek: Programiranje
131474 (1214) Isotropic
»

[C#] IndexOutOfRange Exception

Oddelek: Programiranje
81312 (1157) ql000
»

[C#] Sesutje aplikacije

Oddelek: Programiranje
111637 (1472) Jean-Paul

Več podobnih tem