[Processing]3次元の棒グラフを鳥瞰図的に表示する
ProcessingのBlogラインを追ってたら、Processing: The Beginning at JAMES HAYってのがあって、3次元空間にデータを棒グラフで表示して、斜め上から見下ろしている感じのFlashがあったので、これならすぐにつくれるかなっと思って、作りました。
あくまで似せて作りたかった(笑)ので、少し見づらいかもしれないです。3次元の棒グラフはデータの表現方法(視覚化方法)としてはオーソドックスなので是非とも覚えておきたいサンプルじゃないでしょうか。

Processing:
No comments
-
int FIELD_X1 = -150; // 地平の左上
-
int FIELD_Y1 = -150; // 地平の左上
-
int FIELD_WIDTH = 300; // 地平の幅
-
int FIELD_HEIGHT = 300; // 地平の高さ
-
int FIELD_SCALE = 20; // 地平のメモリの幅
-
-
float DATA_MAX_VALUE = 100; // データの最大値
-
float DATA_MIN_VALUE = 0; // データの最小値
-
int DATA_BLOCK_SIZE = 5; // データブロックの描画サイズ
-
int DATA_FIX = -12; // データ番号の始まり
-
int DATA_SIZE = 25; // データ番号の終わり
-
int DATA_NUM = DATA_SIZE * DATA_SIZE; // データ数
-
float data[] = new float[DATA_NUM];
-
-
-
initData();
-
}
-
-
// データのランダム初期化
-
void initData() {
-
for (int i = 0; i <DATA_NUM; ++i) {
-
}
-
}
-
-
// 描画部
-
// ライティング
-
// 背景を塗りつぶし
-
-
// カメラワーク
-
// cameraPos, targetPos, upVector
-
-
// 地平を描画
-
drawHorizon();
-
-
// データタワーを描画
-
drawData();
-
}
-
-
// 地平を描画
-
void drawHorizon() {
-
-
// 平面を描画
-
-
// 縦線
-
for (int i = FIELD_X1; i <= FIELD_X1 + FIELD_WIDTH; i += FIELD_SCALE) {
-
}
-
-
// 横線
-
for (int j = FIELD_Y1; j <= FIELD_Y1 + FIELD_HEIGHT; j += FIELD_SCALE) {
-
}
-
}
-
-
// データタワーを描画
-
void drawData() {
-
float c;
-
for (int i = 0; i <DATA_NUM; ++i) {
-
if (data[i] == 0) continue;
-
int x = i % DATA_SIZE + DATA_FIX; // ブロック座標
-
int y = i / DATA_SIZE + DATA_FIX; // ブロック座標
-
-
// 座標変換、描画
-
// 高さで色を決定
-
}
-
}
-
-
// 3D線
-
}
-
-
}