Forum » Šola » 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)
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 ...
| Tema | Ogledi | Zadnje sporočilo | |
|---|---|---|---|
| Tema | Ogledi | Zadnje sporočilo | |
| » | tekstura [c++ opengl]Oddelek: Programiranje | 1020 (805) | matej94 |
| » | Linux Synaptics touchpad driverjiOddelek: Operacijski sistemi | 1239 (1116) | preem |
| » | python problemOddelek: Programiranje | 1582 (1322) | Isotropic |
| » | [C#] IndexOutOfRange ExceptionOddelek: Programiranje | 1408 (1253) | ql000 |
| » | [C#] Sesutje aplikacijeOddelek: Programiranje | 1759 (1594) | Jean-Paul |