for文の順番を変えたい
Posted: 2015年6月30日(火) 14:33
Win、Visual Studio
私は今3次元画像を2次平面にみて様々な処理を行っているのですが、
あまりにもプログラムが長いので上手く省略できないかと考えています。
現在は下記のように
変更したいのはfor文の順番のみなのにほとんど同じ処理を3回書いてしまっています。
これを上手くまとめることは可能なのでしょうか?
アドバイスよろしくお願いいたします。
for (int z = 0; z < 101; ++z){
for (int y = 0; y < 101; ++y){
for (int x = 0; x < 101; ++x){
//XY平面として参照した様々な画像処理
}
}
}
//ZX平面で処理
for (int y = 0; y < 101; ++y){
for (int x = 0; x < 101; ++x){
for (int z = 0; z < 101; ++z){
//ZX平面として参照した様々な画像処理
}
}
}
//YZ平面で処理
for (int x = 0; x < 101; ++x){
for (int z = 0; z < 101; ++z){
for (int y = 0; y < 101; ++y){
//YZ平面として参照した様々な画像処理
}
}
}
↓理想……? パターン0、1、2でfor文の回す順番を変えてくれるようにしたい……
//全ての平面
for (int pattern = 0; pattern < 3; ++pattern){
if (pattern == 0)for (int z = 0; z < 101; ++z)
if (pattern == 1)for (int y = 0; y < 101; ++y)
if (pattern == 2)for (int x = 0; x < 101; ++x)
{
if (pattern == 0)for (int y = 0; y < 101; ++y)
if (pattern == 1)for (int x = 0; x < 101; ++x)
if (pattern == 2)for (int z = 0; z < 101; ++z)
{
if (pattern == 0)for (int x = 0; z < 101; ++x)
if (pattern == 1)for (int z = 0; z < 101; ++z)
if (pattern == 2)for (int y = 0; y < 101; ++y)
{
//平面画像に対する画像処理
}
}
}
}
私は今3次元画像を2次平面にみて様々な処理を行っているのですが、
あまりにもプログラムが長いので上手く省略できないかと考えています。
現在は下記のように
変更したいのはfor文の順番のみなのにほとんど同じ処理を3回書いてしまっています。
これを上手くまとめることは可能なのでしょうか?
アドバイスよろしくお願いいたします。
for (int z = 0; z < 101; ++z){
for (int y = 0; y < 101; ++y){
for (int x = 0; x < 101; ++x){
//XY平面として参照した様々な画像処理
}
}
}
//ZX平面で処理
for (int y = 0; y < 101; ++y){
for (int x = 0; x < 101; ++x){
for (int z = 0; z < 101; ++z){
//ZX平面として参照した様々な画像処理
}
}
}
//YZ平面で処理
for (int x = 0; x < 101; ++x){
for (int z = 0; z < 101; ++z){
for (int y = 0; y < 101; ++y){
//YZ平面として参照した様々な画像処理
}
}
}
↓理想……? パターン0、1、2でfor文の回す順番を変えてくれるようにしたい……
//全ての平面
for (int pattern = 0; pattern < 3; ++pattern){
if (pattern == 0)for (int z = 0; z < 101; ++z)
if (pattern == 1)for (int y = 0; y < 101; ++y)
if (pattern == 2)for (int x = 0; x < 101; ++x)
{
if (pattern == 0)for (int y = 0; y < 101; ++y)
if (pattern == 1)for (int x = 0; x < 101; ++x)
if (pattern == 2)for (int z = 0; z < 101; ++z)
{
if (pattern == 0)for (int x = 0; z < 101; ++x)
if (pattern == 1)for (int z = 0; z < 101; ++z)
if (pattern == 2)for (int y = 0; y < 101; ++y)
{
//平面画像に対する画像処理
}
}
}
}