Viewing 4 reply threads
  • Author
    Posts
    • #3048 Score: 0
      MingWang
      Participant

      提高部分的任务是在main.cpp中完成一个函数,请问这个函数功能的正确性如何测试?

    • #3049 Score: 0
      Shi YuChen(助教)
      Keymaster
      4 pts

      可以先将get_model_matrix函数注释掉,然后编写好get_rotation函数。
      接着,将main函数中两处r.set_model(get_model_matrix(angle))注释掉,改为r.set_model(get_rotation(axis(自己随意选),angle))即可编译调试。

      • #3050 Score: 0
        MingWang
        Participant

        明白了!谢谢!

      • #3146 Score: 0
        .J.
        Participant

        我也有一个疑问,关于提高部分的思路,我是利用Rodrigues’ Rotation Formula将传入的旋转轴和角度,生成一个3*3矩阵,然后赋值给一个Eigen::Matrix4f::Identity()的左上角,最后返回这个4*4矩阵。最后我测试发现有些问题,当传入的轴为[0,0,1]时可以正确旋转,但是传入的旋转轴为[1,0,0]或[0,1,0]时,则只会做平移操作。不知道我的思路是否正确,请老师指导,谢谢!

    • #3100 Score: 0
      TuOne_Chan
      Participant
      -1 pt

      构造一个函数,该函数的作用是得到绕任意过原点的轴的旋转变换矩阵。
      请问一下助教老师:
      绕任意过原点的轴是指x,y,z轴吗?

      • #3101 Score: 0
        MingWang
        Participant

        不是。应该指的是任意方向的轴。

    • #3102 Score: 0
      TuOne_Chan
      Participant
      -1 pt

      好的,明白,谢谢老师!

    • #3124 Score: 0
      左趋趋
      Participant
      4 pts

      我写了一个新的命令行parser部分,测起来就比较方便了。

      
          while (parsePos < argc)
          {
              std::string arg = std::string(argv[parsePos]);
              if (arg == "-r")
              {
                  if (parsePos + 1 >= argc)
                  {
                      std::cerr << "-r option error" << std::endl;
                      std::cerr << "Usage: " << argv[0] << " -r angle [-a axisX axisy axisZ] [filename.png]" << std::endl;
                      exit(-1);
                  }
                  angle = std::stof(argv[parsePos + 1]);
                  parsePos += 2;
              }
              else if (arg == "-a")
              {
                  if (parsePos + 3 >= argc)
                  {
                      std::cerr << "-a option error" << std::endl;
                      std::cerr << "Usage: " << argv[0] << " -r angle [-a axisX axisy axisZ] [filename.png]" << std::endl;
                      exit(-1);
                  }
                  raxis.x() = std::stof(argv[parsePos + 1]);
                  raxis.y() = std::stof(argv[parsePos + 2]);
                  raxis.z() = std::stof(argv[parsePos + 3]);
                  parsePos += 4;
              }
              else if (arg.rfind(".png") == arg.size() - 4)
              {
                  command_line = true;
                  filename = arg;
                  parsePos += 1;
              }
              else
              {
                  std::cerr << "Invalid option or filename: " << arg << std::endl;
                  std::cerr << "Usage: " << argv[0] << " -r angle [-a axisX axisy axisZ] [filename.png]" << std::endl;
                  exit(-1);
              }
          }
      
      • #3125 Score: 0
        左趋趋
        Participant
        4 pts

        为什么code的字体这么小呢?

Viewing 4 reply threads
  • You must be logged in to reply to this topic.