jules

Hozzászólások

10 bejegyzés megtekintése - 91-100 / 269
  • Szerző
    Bejegyzés
  • Hozzászólás: C++ kerdes… #2155475
    jules
    Felhasználó

      huh, expliciten/kodban le irnad ide, hogy mire gondolsz!

      Hozzászólás: C++ kerdes… #2155476
      jules
      Felhasználó

        huh, expliciten/kodban le irnad ide, hogy mire gondolsz!

        Hozzászólás: C++ kerdes… #2155472
        jules
        Felhasználó

          Amugy, hogyan kellene definialni egy ilyen (float * vector) muveletet?

          Amit irtam fent, az nem jo szerintem, mert csak a vector x komponensevel szorozza a matrixot, nem?

          Hozzászólás: C++ kerdes… #2155468
          jules
          Felhasználó

            Lenne egy kis gond…

            Amikor definialom ezt a fuggvenyt:

            Code:
            // ROTATE AROUND ‘X’
                float RotateX(float RvX, float RotmatrixX[][3], vector vec[], rotvector rvec[]){

                for (int i = 0; i < 3; i++){
            for (int k = 0; k < 3; k++){
                RvX = 0.0f;
                RvX += RotMatrixX[i][k] * vec[k];
                rvec[i] = RvX;
            }
                }
                return RvX;
                }

            akkor ez nyilvan nem jo, mert egy vector tipusu dolgot probalok float tipusuba konvertalni es a szorzas muvelete sincs definialva, hogy kezelheto legyen a (float * vector) muvelet.

            Hogy lehetne ezt a problemat megoldani?

            Persze irhatnam, hogy

            Code:
            RvX += RotMatrixX[i][k] * vec[k].x;
            rvec[i].x = RvX;

            de ez nem tul ertelmes, nem?

            Hozzászólás: C++ kerdes… #2155469
            jules
            Felhasználó

              Lenne egy kis gond…

              Amikor definialom ezt a fuggvenyt:

              Code:
              // ROTATE AROUND ‘X’
                  float RotateX(float RvX, float RotmatrixX[][3], vector vec[], rotvector rvec[]){

                  for (int i = 0; i < 3; i++){
              for (int k = 0; k < 3; k++){
                  RvX = 0.0f;
                  RvX += RotMatrixX[i][k] * vec[k];
                  rvec[i] = RvX;
              }
                  }
                  return RvX;
                  }

              akkor ez nyilvan nem jo, mert egy vector tipusu dolgot probalok float tipusuba konvertalni es a szorzas muvelete sincs definialva, hogy kezelheto legyen a (float * vector) muvelet.

              Hogy lehetne ezt a problemat megoldani?

              Persze irhatnam, hogy

              Code:
              RvX += RotMatrixX[i][k] * vec[k].x;
              rvec[i].x = RvX;

              de ez nem tul ertelmes, nem?

              Hozzászólás: C++ kerdes… #2155464
              jules
              Felhasználó

                Tenyleg nem ertem, hogy hol a hiba…102.gif 

                Itt a kód:

                Code:
                #include
                #include
                #include
                #include
                #include

                #define N 5000
                using namespace std;

                const float M_2PIf = 6.283185307179586476925286766559f;
                const float M_PIf  = 3.141592653589793238462643383279f;
                const float epsilon = M_PIf/(1e-06f);

                /* —————–RANDOM_GENERATOR——————————- */

                float rand(float min, float max)
                {
                    return min + (max – min) * rand() / (float)RAND_MAX;
                }

                //*********************************
                struct vector { // random vector before the rotation
                float x,y,z;
                };

                struct rotvector { // random vector after the rotation
                float x,y,z;
                };
                //*********************************

                //  >>>>>>>>> ROTATION <<<<<<<<<<<

                    float fCos, fSin;
                    fCos = cosf(epsilon);
                    fSin = sinf(epsilon);

                    float RotMatrixX[3][3] = {1.0f, 0.0f, 0.0f, 0.0f, fCos, -fSin, 0.0f, fSin, fCos};
                    float RotMatrixY[3][3] = {fCos, 0.0f, fSin, 0.0f, 1.0f, 0.0f, -fSin, 0.0f, fCos};
                    float RotMatrixZ[3][3] = {fCos, -fSin, 0.0f, fSin, fCos, 0.0f, 0.0f, 0.0f, 1.0f};

                    vector vec[N];
                    rotvector rvec[N];

                    // ROT AROUND 'X'
                    float RotateX(float RvX, float RotMatrixX[][3], vector vec[], rotvector rvec[]){

                for (int i = 0; i < 3; i++)
                {
                RvX = 0;
                for (int k = 0; k < 3; k++)
                RvX += RotMatrixX[I][k] * vec[k];
                rvec[I] = RvX;
                }

                    return RvX;
                    }

                    // ROT AROUND 'Y'
                    float RotateY(float RvY, float RotMatrixY[][3], vector vec[], rotvector rvec[]){

                for (int i = 0; i < 3; i++)
                {
                RvY = 0;
                for (int k = 0; k < 3; k++)
                RvY += RotMatrixY[I][k] * vec[k];
                rvec[I] = RvY;
                }

                    return RvY;
                    }

                    // ROT AROUND 'Z'
                    float RotateZ(float RvZ, float RotMatrixZ[][3], vector vec[], rotvector rvec[]){

                for (int i = 0; i < 3; i++)
                {
                RvZ = 0;
                for (int k = 0; k < 3; k++)
                RvZ += RotMatrixZ[I][k] * vec[k];
                rvec[I] = RvZ;
                }

                    return RvZ;
                    }

                // MAIN function
                int main(void) {

                    int i;

                    float RotateX(float RvX, float RotMatrixX[][3], vector vec[], rotvector rvec[]);
                    float RotateY(float RvY, float RotMatrixY[][3], vector vec[], rotvector rvec[]);
                    float RotateZ(float RvZ, float RotMatrixZ[][3], vector vec[], rotvector rvec[]);

                    // Initialize the random number generator
                    // srand(time(0));
                    for (i = 0; i < N; i++) {

                    float phi  = rand(0.0f, M_2PIf);
                    float costheta = rand(-1.0f, 1.0f);

                    float x = 1.0f * sqrtf(1-costheta*costheta) * cosf(phi);
                    float y = 1.0f * sqrtf(1-costheta*costheta) * sinf(phi);
                    float z = 1.0f * costheta;

                    // store the initial vector
                    vec[I].x = x;
                    vec[I].y = y;
                    vec[I].z = z;
                    // store the rotated vector
                    rvec[I].x = x;
                    rvec[I].y = y;
                    rvec[I].z = z;

                //*********************************

                    typedef int r[I];
                    srand ( time(NULL) );  // initialize random seed

                    for(int i=0; i < N; i++ )
                    { 
                    r[I] = rand() % 3 + 0;  // generate numbers: 0 or 1 or 2

                switch ( r[I] )

                  { 
                  case 0:
                RotateX();
                break;
                  case 1:
                RotateY();
                break;
                  case 2:
                RotateZ();
                break;
                  }

                    }

                }

                return 0;
                }

                es ezek az errorok:

                Code:
                rotrot.cpp:34: error: expected constructor, destructor, or type conversion before ‘=’ token
                rotrot.cpp:34: error: expected `,’ or `;’ before ‘=’ token
                rotrot.cpp:35: error: expected constructor, destructor, or type conversion before ‘=’ token
                rotrot.cpp:35: error: expected `,’ or `;’ before ‘=’ token

                rotrot.cpp: In function `float RotateX(float, float (*)[3], vector*, rotvector*)’:
                rotrot.cpp:51: error: no match for ‘operator*’ in ‘*((((((unsigned int)i) * 3) + ((unsigned int)k)) * 4u) + ((float*)RotMatrixX)) * *((+(((unsigned int)k) * 12u)) + vec)’
                rotrot.cpp:52: error: no match for ‘operator=’ in ‘*((+(((unsigned int)i) * 12u)) + rvec) = RvX’
                rotrot.cpp:26: note: candidates are: rotvector& rotvector::operator=(const rotvector&)
                rotrot.cpp: In function `float RotateY(float, float (*)[3], vector*, rotvector*)’:
                rotrot.cpp:65: error: no match for ‘operator*’ in ‘*((((((unsigned int)i) * 3) + ((unsigned int)k)) * 4u) + ((float*)RotMatrixY)) * *((+(((unsigned int)k) * 12u)) + vec)’

                rotrot.cpp:66: error: no match for ‘operator=’ in ‘*((+(((unsigned int)i) * 12u)) + rvec) = RvY’
                rotrot.cpp:26: note: candidates are: rotvector& rotvector::operator=(const rotvector&)

                rotrot.cpp: In function `float RotateZ(float, float (*)[3], vector*, rotvector*)’:
                rotrot.cpp:79: error: no match for ‘operator*’ in ‘*((((((unsigned int)i) * 3) + ((unsigned int)k)) * 4u) + ((float*)RotMatrixZ)) * *((+(((unsigned int)k) * 12u)) + vec)’
                otrot.cpp:80: error: no match for ‘operator=’ in ‘*((+(((unsigned int)i) * 12u)) + rvec) = RvZ’
                rotrot.cpp:26: note: candidates are: rotvector& rotvector::operator=(const rotvector&)

                rotrot.cpp: In function `int main()’:

                rotrot.cpp:124: error: expected primary-expression before ‘[‘ token
                rotrot.cpp:127: error: expected primary-expression before ‘[‘ token
                rotrot.cpp:92: error: too few arguments to function `float RotateX(float, float (*)[3], vector*, rotvector*)’
                rotrot.cpp:131: error: at this point in file
                rotrot.cpp:93: error: too few arguments to function `float RotateY(float, float (*)[3], vector*, rotvector*)’
                rotrot.cpp:134: error: at this point in file
                rotrot.cpp:94: error: too few arguments to function `float RotateZ(float, float (*)[3], vector*, rotvector*)’
                rotrot.cpp:137: error: at this point in file

                [/I][/I][/I][/I][/I][/I][/I][/I][/I][/I][/I][/I][/I][/I][/I]

                Hozzászólás: C++ kerdes… #2155465
                jules
                Felhasználó

                  Tenyleg nem ertem, hogy hol a hiba…102.gif 

                  Itt a kód:

                  Code:
                  #include
                  #include
                  #include
                  #include
                  #include

                  #define N 5000
                  using namespace std;

                  const float M_2PIf = 6.283185307179586476925286766559f;
                  const float M_PIf  = 3.141592653589793238462643383279f;
                  const float epsilon = M_PIf/(1e-06f);

                  /* —————–RANDOM_GENERATOR——————————- */

                  float rand(float min, float max)
                  {
                      return min + (max – min) * rand() / (float)RAND_MAX;
                  }

                  //*********************************
                  struct vector { // random vector before the rotation
                  float x,y,z;
                  };

                  struct rotvector { // random vector after the rotation
                  float x,y,z;
                  };
                  //*********************************

                  //  >>>>>>>>> ROTATION <<<<<<<<<<<

                      float fCos, fSin;
                      fCos = cosf(epsilon);
                      fSin = sinf(epsilon);

                      float RotMatrixX[3][3] = {1.0f, 0.0f, 0.0f, 0.0f, fCos, -fSin, 0.0f, fSin, fCos};
                      float RotMatrixY[3][3] = {fCos, 0.0f, fSin, 0.0f, 1.0f, 0.0f, -fSin, 0.0f, fCos};
                      float RotMatrixZ[3][3] = {fCos, -fSin, 0.0f, fSin, fCos, 0.0f, 0.0f, 0.0f, 1.0f};

                      vector vec[N];
                      rotvector rvec[N];

                      // ROT AROUND 'X'
                      float RotateX(float RvX, float RotMatrixX[][3], vector vec[], rotvector rvec[]){

                  for (int i = 0; i < 3; i++)
                  {
                  RvX = 0;
                  for (int k = 0; k < 3; k++)
                  RvX += RotMatrixX[I][k] * vec[k];
                  rvec[I] = RvX;
                  }

                      return RvX;
                      }

                      // ROT AROUND 'Y'
                      float RotateY(float RvY, float RotMatrixY[][3], vector vec[], rotvector rvec[]){

                  for (int i = 0; i < 3; i++)
                  {
                  RvY = 0;
                  for (int k = 0; k < 3; k++)
                  RvY += RotMatrixY[I][k] * vec[k];
                  rvec[I] = RvY;
                  }

                      return RvY;
                      }

                      // ROT AROUND 'Z'
                      float RotateZ(float RvZ, float RotMatrixZ[][3], vector vec[], rotvector rvec[]){

                  for (int i = 0; i < 3; i++)
                  {
                  RvZ = 0;
                  for (int k = 0; k < 3; k++)
                  RvZ += RotMatrixZ[I][k] * vec[k];
                  rvec[I] = RvZ;
                  }

                      return RvZ;
                      }

                  // MAIN function
                  int main(void) {

                      int i;

                      float RotateX(float RvX, float RotMatrixX[][3], vector vec[], rotvector rvec[]);
                      float RotateY(float RvY, float RotMatrixY[][3], vector vec[], rotvector rvec[]);
                      float RotateZ(float RvZ, float RotMatrixZ[][3], vector vec[], rotvector rvec[]);

                      // Initialize the random number generator
                      // srand(time(0));
                      for (i = 0; i < N; i++) {

                      float phi  = rand(0.0f, M_2PIf);
                      float costheta = rand(-1.0f, 1.0f);

                      float x = 1.0f * sqrtf(1-costheta*costheta) * cosf(phi);
                      float y = 1.0f * sqrtf(1-costheta*costheta) * sinf(phi);
                      float z = 1.0f * costheta;

                      // store the initial vector
                      vec[I].x = x;
                      vec[I].y = y;
                      vec[I].z = z;
                      // store the rotated vector
                      rvec[I].x = x;
                      rvec[I].y = y;
                      rvec[I].z = z;

                  //*********************************

                      typedef int r[I];
                      srand ( time(NULL) );  // initialize random seed

                      for(int i=0; i < N; i++ )
                      { 
                      r[I] = rand() % 3 + 0;  // generate numbers: 0 or 1 or 2

                  switch ( r[I] )

                    { 
                    case 0:
                  RotateX();
                  break;
                    case 1:
                  RotateY();
                  break;
                    case 2:
                  RotateZ();
                  break;
                    }

                      }

                  }

                  return 0;
                  }

                  es ezek az errorok:

                  Code:
                  rotrot.cpp:34: error: expected constructor, destructor, or type conversion before ‘=’ token
                  rotrot.cpp:34: error: expected `,’ or `;’ before ‘=’ token
                  rotrot.cpp:35: error: expected constructor, destructor, or type conversion before ‘=’ token
                  rotrot.cpp:35: error: expected `,’ or `;’ before ‘=’ token

                  rotrot.cpp: In function `float RotateX(float, float (*)[3], vector*, rotvector*)’:
                  rotrot.cpp:51: error: no match for ‘operator*’ in ‘*((((((unsigned int)i) * 3) + ((unsigned int)k)) * 4u) + ((float*)RotMatrixX)) * *((+(((unsigned int)k) * 12u)) + vec)’
                  rotrot.cpp:52: error: no match for ‘operator=’ in ‘*((+(((unsigned int)i) * 12u)) + rvec) = RvX’
                  rotrot.cpp:26: note: candidates are: rotvector& rotvector::operator=(const rotvector&)
                  rotrot.cpp: In function `float RotateY(float, float (*)[3], vector*, rotvector*)’:
                  rotrot.cpp:65: error: no match for ‘operator*’ in ‘*((((((unsigned int)i) * 3) + ((unsigned int)k)) * 4u) + ((float*)RotMatrixY)) * *((+(((unsigned int)k) * 12u)) + vec)’

                  rotrot.cpp:66: error: no match for ‘operator=’ in ‘*((+(((unsigned int)i) * 12u)) + rvec) = RvY’
                  rotrot.cpp:26: note: candidates are: rotvector& rotvector::operator=(const rotvector&)

                  rotrot.cpp: In function `float RotateZ(float, float (*)[3], vector*, rotvector*)’:
                  rotrot.cpp:79: error: no match for ‘operator*’ in ‘*((((((unsigned int)i) * 3) + ((unsigned int)k)) * 4u) + ((float*)RotMatrixZ)) * *((+(((unsigned int)k) * 12u)) + vec)’
                  otrot.cpp:80: error: no match for ‘operator=’ in ‘*((+(((unsigned int)i) * 12u)) + rvec) = RvZ’
                  rotrot.cpp:26: note: candidates are: rotvector& rotvector::operator=(const rotvector&)

                  rotrot.cpp: In function `int main()’:

                  rotrot.cpp:124: error: expected primary-expression before ‘[‘ token
                  rotrot.cpp:127: error: expected primary-expression before ‘[‘ token
                  rotrot.cpp:92: error: too few arguments to function `float RotateX(float, float (*)[3], vector*, rotvector*)’
                  rotrot.cpp:131: error: at this point in file
                  rotrot.cpp:93: error: too few arguments to function `float RotateY(float, float (*)[3], vector*, rotvector*)’
                  rotrot.cpp:134: error: at this point in file
                  rotrot.cpp:94: error: too few arguments to function `float RotateZ(float, float (*)[3], vector*, rotvector*)’
                  rotrot.cpp:137: error: at this point in file

                  [/I][/I][/I][/I][/I][/I][/I][/I][/I][/I][/I][/I][/I][/I][/I]

                  Hozzászólás: C++ kerdes… #2155460
                  jules
                  Felhasználó

                    Udv,

                    kijavitottam amiket irtal, de igy nekem meg tobb hibat ir a fuggvenyes reszekre…

                    Igy definialtam es a deklaraciban is ezeket a parametereket irtam:

                    Code:
                    // ROT AROUND ‘X’
                        float RotateX(double RvX, float RotMatrixX[][3], vector vec[], rotvector rvec[]){

                    for (int i = 0; i < 3; i++)
                    {
                    RvX = 0;
                    for (int k = 0; k < 3; k++)
                    RvX += RotMatrixX[i][k] * vec[k];
                    rvec[i] = RvX;
                    }

                        return RvX;
                        }

                    Hozzászólás: C++ kerdes… #2155461
                    jules
                    Felhasználó

                      Udv,

                      kijavitottam amiket irtal, de igy nekem meg tobb hibat ir a fuggvenyes reszekre…

                      Igy definialtam es a deklaraciban is ezeket a parametereket irtam:

                      Code:
                      // ROT AROUND ‘X’
                          float RotateX(double RvX, float RotMatrixX[][3], vector vec[], rotvector rvec[]){

                      for (int i = 0; i < 3; i++)
                      {
                      RvX = 0;
                      for (int k = 0; k < 3; k++)
                      RvX += RotMatrixX[i][k] * vec[k];
                      rvec[i] = RvX;
                      }

                          return RvX;
                          }

                      Hozzászólás: C++ kerdes… #2155454
                      jules
                      Felhasználó

                        Átírtam a „switch” szerkezetes részben, float RotmatrixX()…stb-re a fuggvényeket. Ekkor ilyenek ír ki hibának:

                        a „function-definition” az, ahol definialtam a fenti fuggvenyeket.

                        Code:
                        rot.cpp: In function ‘int main()’:
                        rot.cpp:252: error: a function-definition is not allowed here before ‘{’ token
                        rot:266: error: a function-definition is not allowed here before ‘{’ token
                        rot:280: error: a function-definition is not allowed here before ‘{’ token
                        rot:304: error: expected unqualified-id before ‘[’ token
                        rot:307: error: expected primary-expression before ‘[’ token

                        Most mi legyen?

                      10 bejegyzés megtekintése - 91-100 / 269