コード例 #1
0
ファイル: transmit.cpp プロジェクト: kfujiapples/Team-Quasar
/* Construct Packet */
void Construct_Packet(void)
{
  //Serial.println("construct packet top");

  //Variable for Index and uptime
  unsigned long uptime_ms;

  //Put schema number in packet
  G_packet.schema = 297;

  //Update data
  uptime_ms = millis();

  //Put uptime in packet
  G_packet.uptime_ms = uptime_ms;

  //Poll and put battery and panel data in packet
  for(int p = 0; p < 6; p++)
  { G_packet.batt_mv[p] = battery();
    G_packet.panel_mv[p] = panel();
    delay(400);
  }
  
  //Poll and put panel data in packet
  /*for(int p = 0; p < 6; p++)
  { G_packet.panel_mv[p] = panel();
    delay(400);
  }*/
  
  G_packet.bmp185_press_pa = pressure();
  G_packet.bmp185_temp_decic = temp();
  G_packet.humidity_centi_pct = humidity();

  //Poll and put irradiance data in packet
  for(int i = 0; i < 20; i++)
  { G_packet.solar_irr_w_m2[i] = irradiance();
    delay(300);
  }
  
  /*//Hardcoded Test Packet
  G_packet.uptime_ms = 1;
  for(int p = 0; p <= 4; p++)
  { G_packet.batt_mv[p] = 1;
    Serial.print("Battery");
    Serial.println(G_packet.batt_mv[p]);
    delay(400);
  }
  for(int p = 0; p <= 4; p++)
  { G_packet.panel_mv[p] = 2;
    Serial.print("Panel");
    Serial.println(G_packet.panel_mv[p]);
    delay(400);
  }
  
  G_packet.bmp185_press_pa = 3;
  Serial.print("Pressure");
  Serial.println(G_packet.bmp185_press_pa);
  G_packet.bmp185_temp_decic = 4;
  Serial.print("Temp");
  Serial.println(G_packet.bmp185_temp_decic);
  G_packet.humidity_centi_pct = 5;
  Serial.print("Humidity");
  Serial.println(G_packet.humidity_centi_pct);
  for(int i = 0; i <= 14; i++)
  { G_packet.solar_irr_w_m2[i] = 6;
    Serial.print("Solar");
    Serial.println(G_packet.solar_irr_w_m2[i]);
    delay(1000);
  }*/
}
コード例 #2
0
ファイル: main.cpp プロジェクト: tokoik/irradiancemapping
//
// メインプログラム
//
int main()
{
    // GLFW を初期化する
    if (glfwInit() == GL_FALSE)
    {
        // 初期化に失敗した
        std::cerr << "Can't initialize GLFW" << std::endl;
        return 1;
    }

    // プログラム終了時の処理を登録する
    atexit(cleanup);

    // ウィンドウを作成する
    Window window("Irradiance Mapping", 960, 540);

    // OpenGL の初期設定
    glClearColor(0.3f, 0.5f, 0.8f, 0.0f);
    glEnable(GL_NORMALIZE);
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_CULL_FACE);
    glEnable(GL_MULTISAMPLE);

    // 陰影付けを無効にする
    glDisable(GL_LIGHTING);

    // テクスチャ
    GLuint imap[mapcount], emap[mapcount];
    glGenTextures(mapcount, imap);
    glGenTextures(mapcount, emap);

    // テクスチャの読み込み
    for (size_t i = 0; i < mapcount; ++i)
    {
#if USEMAP
        loadMap(irrmaps[i], envmaps[i], imap[i], emap[i]);
#else
        createMap(skymaps[i], skysize, imap[i], imapsize, isamples, emap[i], emapsize, esamples, ambient, shininess);
#endif
    }

    // 放射照度マップのかさ上げに使うテクスチャユニットの設定
    glActiveTexture(GL_TEXTURE0);
    glEnable(GL_TEXTURE_2D);
    irradiance();

    // 放射照度マップのかさ上げに使うテクスチャユニットの設定
    glActiveTexture(GL_TEXTURE1);
    glEnable(GL_TEXTURE_2D);
    diffuse();

    // 環境マップの加算に使うテクスチャユニットの設定
    glActiveTexture(GL_TEXTURE2);
    glEnable(GL_TEXTURE_2D);
    reflection();

    // 材質データ
    GLuint ng;
    GLuint (*group)[2];
    GLfloat (*amb)[4], (*diff)[4], (*spec)[4], *shi;

    // 形状データ
    GLuint nv;
    GLfloat (*pos)[3], (*norm)[3];

    // 形状データの読み込み
    ggLoadObj(filename, ng, group, amb, diff, spec, shi, nv, pos, norm, false);

    // ウィンドウが開いている間繰り返す
    while (window.shouldClose() == GL_FALSE)
    {
        // ウィンドウを消去する
        window.clear();

        // テクスチャの選択
        const int select(window.getSelection() % mapcount);

        // 明るさ
        GLfloat brightness[4];
        window.getBrightness(brightness);

        // 放射照度マップのかさ上げ
        glActiveTexture(GL_TEXTURE0);
        glBindTexture(GL_TEXTURE_2D, imap[select]);
        glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, brightness);

        // 拡散反射光強度の算出
        glActiveTexture(GL_TEXTURE1);
        glBindTexture(GL_TEXTURE_2D, imap[select]);

        // 環境マッピング
        glActiveTexture(GL_TEXTURE2);
        glBindTexture(GL_TEXTURE_2D, emap[select]);

        // モデルビュー変換行列の設定
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();

        // 視点の移動
        glTranslatef(window.getPosition()[0], window.getPosition()[1], window.getPosition()[2]);

        // トラックボール処理による回転
        glMultMatrixf(window.getTb());

        // シーンの描画
        scene(ng, group, diff, spec, nv, pos, norm);

        // 床の描画
        floor(5, -1.0f);

        // カラーバッファを入れ替えてイベントを取り出す
        window.swapBuffers();
    }
}