Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem ze zrozumieniem napisanego kodu. Proszę o pomoc.

Ostatnio zmodyfikowano 2011-09-16 08:21
Autor Wiadomość
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:

  
C/C++
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 ]; //suma sił reakcji działających na punkt
            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 ); // wyliczenie współrzednych iloczynu wektorowego
            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 ]; //współrzędne wektorów
            a2 = ax[ i ][ j - 1 ] - ax[ i ][ j ]; // z których liczony jest iloczyn wektorowy
            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 ); // wyliczenie współrzednych iloczynu wektorowego
            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 ) );
        }
       
        //Dodatkowo podana jest obliczona siła wiatru. Zadeklarowany wcześniej kat = 0.
       
        if( wiatr = 0 ) //obliczanie wiatru jesli wieje
        {
            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?
P-41038
DejaVu
» 2011-09-16 08:21:56
C/C++
for( int i = 0; i <= a; i++ )
{
    for( int j = 0; j <= b; j++ )
         wiatrX = 0.01 * cos( kat );
   
    wiatrZ = 0.001 * sin( kat );
}
P-41041
« 1 »
  Strona 1 z 1