Problem ze zrozumieniem napisanego kodu. Proszę o pomoc.
Ostatnio zmodyfikowano 2011-09-16 08:21
liberte Temat założony przez niniejszego użytkownika |
Problem ze zrozumieniem napisanego kodu. Proszę o pomoc. » 2011-09-16 03:05:55 Witam! Mam problem ze zrozumieniem kodu programu. Program to powiewająca flaga na wietrze. Flaga zbudowana jest z systemu punktów materialnych znajdujących się w tablicy dwuwskaźnikowej. Punkty połączone są ze sobą sprężynami pionowymi, ukośnymi i poziomymi. Rozumiem, że dla każdego rodzaju punktów (brzegowych, narożnych i środkowych) obliczana jest suma sił sprężystości działających na dany punkt. Nie rozumiem natomiast na jakiej zasadzie obliczana jest siła parcia wiatru. Fragment kodu: for( int i = 0; i <= a; i++ ) { for( int j = 0; j <= b; j++ ) { if(( i == a ) &&( j == 0 ) ) { Fx[ i ][ j ] =- Fx1[ i - 1 ][ j ] + Fx2[ i ][ j ] - Fx4[ i - 1 ][ j + 1 ]; Fy[ i ][ j ] =- Fy1[ i - 1 ][ j ] + Fy2[ i ][ j ] - Fy4[ i - 1 ][ j + 1 ]; Fz[ i ][ j ] =- Fz1[ i - 1 ][ j ] + Fz2[ i ][ j ] - Fz4[ i - 1 ][ j + 1 ]; a1 = ax[ i ][ j + 1 ] - ax[ i ][ j ]; a2 = ax[ i - 1 ][ j ] - ax[ i ][ j ]; b1 = ay[ i ][ j + 1 ] - ay[ i ][ j ]; b2 = ay[ i - 1 ][ j ] - ay[ i ][ j ]; c1 = az[ i ][ j + 1 ] - az[ i ][ j ]; c2 = az[ i - 1 ][ j ] - az[ i ][ j ]; norx =( b1 * c2 ) -( b2 * c1 ); nory =( c1 * a2 ) -( c2 * a1 ); norz =( a1 * b2 ) -( a2 * b1 ); wiatrx[ i ][ j ] = norx * norx * wiatrX / sqrt(( norx * norx ) +( nory * nory ) +( norz * norz ) ); wiatry[ i ][ j ] = nory * nory * wiatrY / sqrt(( norx * norx ) +( nory * nory ) +( norz * norz ) ); wiatrz[ i ][ j ] = norz * norz * wiatrZ / sqrt(( norx * norx ) +( nory * nory ) +( norz * norz ) ); } else if(( i == a ) &&( j == b ) ) { Fx[ i ][ j ] =-( Fx1[ i - 1 ][ j ] + Fx2[ i ][ j - 1 ] + Fx3[ i - 1 ][ j - 1 ] ); Fy[ i ][ j ] =-( Fy1[ i - 1 ][ j ] + Fy2[ i ][ j - 1 ] + Fy3[ i - 1 ][ j - 1 ] ); Fz[ i ][ j ] =-( Fz1[ i - 1 ][ j ] + Fz2[ i ][ j - 1 ] + Fz3[ i - 1 ][ j - 1 ] ); a1 = ax[ i - 1 ][ j ] - ax[ i ][ j ]; a2 = ax[ i ][ j - 1 ] - ax[ i ][ j ]; b1 = ay[ i - 1 ][ j ] - ay[ i ][ j ]; b2 = ay[ i ][ j - 1 ] - ay[ i ][ j ]; c1 = az[ i - 1 ][ j ] - az[ i ][ j ]; c2 = az[ i ][ j - 1 ] - az[ i ][ j ]; norx =( b1 * c2 ) -( b2 * c1 ); nory =( c1 * a2 ) -( c2 * a1 ); norz =( a1 * b2 ) -( a2 * b1 ); wiatrx[ i ][ j ] = norx * norx * wiatrX / sqrt(( norx * norx ) +( nory * nory ) +( norz * norz ) ); wiatry[ i ][ j ] = nory * nory * wiatrY / sqrt(( norx * norx ) +( nory * nory ) +( norz * norz ) ); wiatrz[ i ][ j ] = norz * norz * wiatrZ / sqrt(( norx * norx ) +( nory * nory ) +( norz * norz ) ); } if( wiatr = 0 ) { kat += 0.02; for( int i = 0; i <= a; i++ ) { for( int j = 0; j <= b; j++ ) wiatrX = 0.01 * cos( kat ); wiatrZ = 0.001 * sin( kat ); } Flaga zbudowana jest z trójkątów. Proszę o wyjaśnienie w jaki sposób obliczana jest siła wiatru? |
|
DejaVu |
» 2011-09-16 08:21:56 for( int i = 0; i <= a; i++ ) { for( int j = 0; j <= b; j++ ) wiatrX = 0.01 * cos( kat ); wiatrZ = 0.001 * sin( kat ); }
|
|
« 1 » |