processing 軸回転の回転のしかた

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
みによん

processing 軸回転の回転のしかた

#1

投稿記事 by みによん » 8年前

processingの勉強中です。

Eという図形に対して

size(600, 600, P3D);
float[] x = {170, 290, 170, 170, 170, 270, 170, 290};
float[] y = {60, 60, 60, 260, 160, 160, 260, 260};
float[] z = {-100, -100, -100, -100, -100, -100, -100, -100};
int i, n = x.length, d = 0;

float[] xd = new float[n];
float[] yd = new float[n];
float[] zd = new float[n];

float tx = 170, ty = 0, tz = -100;
float r = radians(50);

for(i = 0; i < n; i++){
xd = x - tx;
yd = y - ty;
zd = z - tz;
}
for(i = 0; i < n; i++){
float tmp = cos(r) * xd + sin(r) * zd;
yd = yd;
zd[i] = -sin(r) * xd[i] + cos(r) * zd[i];
xd[i] = tmp;
}
for(i = 0; i < n; i++){
xd[i] = xd[i] + tx;
yd[i] = yd[i] + ty;
zd[i] = zd[i] + tz;
}

for(i = 0; i < n / 2; i++){
line(xd[i * 2], yd[i * 2], zd[i * 2], xd[i * 2 + 1], yd[i * 2 + 1], zd[i * 2 + 1]);
}

だと、Eの縦線(Y軸)を軸に回転するソースなんですけど
これをX軸中心にするためにはどのように変化させればいいのでしょうか?
詳細にいうと、Eの文字の一番上の横線を軸にしたいです。

}
for(i = 0; i < n; i++){
float tmp = cos(r) * xd[i] + sin(r) * zd[i];
yd[i] = yd[i];
zd[i] = -sin(r) * xd[i] + cos(r) * zd[i];
xd[i] = tmp;
}
この辺をいじるのかな?と思いいろいろ試してます・・

“C言語何でも質問掲示板” へ戻る