ショッピングモール  Personal Health / Stress ( Alexander Technique )


掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板1

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.4897

修正箇所のアドバイスお願いします(マンデルブロ集合の画像作成プログラム)
投稿者---バンビ(2005/11/23 22:46:46)


マンデルブロ集合の画像をjpg形式で出力するプログラムを作りたいのですが
何度やっても真っ黒な画像が出てきてしまいます
何処を修正すれば良いのかアドバイスをお願いします
拡散までの回数によって色分けする部分は
今の段階では何でも良いのですが、出来ればそこもどうすれば良いのか
アドバイスをお願いします

#include <stdio.h>
int main()
{
    double cr,ci,zr,zi,zrp,zip,bunkatu;
    int i,a,b;
    unsigned char bitmap[512][512][3];
    FILE *fd;
    bunkatu=2.4/512;
    a=0;b=0;
    
    for(cr=-1.6;b<=510;cr=cr+bunkatu)
    {
        for(ci=-1.2;a<=510;ci=ci+bunkatu)
        {
        zrp=0;zr=0;
        zip=0;zi=0;
            for(i=0;i<=254;i++)
            {
                zr=zrp*zrp-zip*zip+cr;
                zi=2*zrp*zip+ci;
                if(zr+zi>2)
                {
                    break;
                }
                zrp=zr;zip=zi;
            }
            if(i==254)
            {
                bitmap[a][b][0]=(unsigned char)0;
                bitmap[a][b][1]=(unsigned char)0;
                bitmap[a][b][2]=(unsigned char)0;
            }
            else
            {
                bitmap[a][b][0]=(unsigned char)(i);
                bitmap[a][b][1]=(unsigned char)0;
                bitmap[a][b][2]=(unsigned char)0;
            }
            a++;
        }
        b++;

    }
    fd=fopen("line.ppm","w");
    fprintf(fd,"P6\n");
    fprintf(fd,"%d  %d\n",512,512);
    fprintf(fd,"255\n");
    fwrite(bitmap,sizeof(char),512*512*3,fd);
    fclose(fd);
    popen("cjpeg -quality 100 line.ppm>line.jpg","r");

    return 0;
}




この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:修正箇所のアドバイスお願いします(マンデルブロ集合の画像作成プログラム) 4898 ぽへぇ 2005/11/23 23:30:08
<子記事> Re:修正箇所のアドバイスお願いします(マンデルブロ集合の画像作成プログラム) 4899 かずま 2005/11/23 23:36:40
<子記事> Re:わかりません! 4900 si 2005/11/24 01:02:30


No.4898

Re:修正箇所のアドバイスお願いします(マンデルブロ集合の画像作成プログラム)
投稿者---ぽへぇ(2005/11/23 23:30:08)


>マンデルブロ集合の画像をjpg形式で出力する
>プログラムを作りたいのですが
jpgにする前のppmでは正常に表示されているのでしょうか?

コードをデバッガで追いかけたことはありますか?
2回目以降の内側(ciのループ)が意図しない動きを
していることに気が付くはずです。

あと細かい話ですが
>fd=fopen("line.ppm","w");
fd=fopen("line.ppm","wb");
の方が良いでしょう。




この投稿にコメントする

削除パスワード

No.4927

ありがとうございました
投稿者---バンビ(2005/11/24 22:14:17)


ぽへぇさんとかずまさんのアドバイスで
どうすれば良いのか解りました
有難うございました

デバッガで見たことはありませんでした
というか、存在自体知りませんでした
今少し調べてみてもよく理解できなかったのですが
使えるようになるように頑張ってみたいと思います


この投稿にコメントする

削除パスワード

No.4899

Re:修正箇所のアドバイスお願いします(マンデルブロ集合の画像作成プログラム)
投稿者---かずま(2005/11/23 23:36:40)


b++; のあとに a = 0;


この投稿にコメントする

削除パスワード

No.4900

Re:わかりません!
投稿者---si(2005/11/24 01:02:30)


他から拾ったプログラムで作って見ました。

#include <stdio.h>

#define XSIZE 512
#define YSIZE 512
#define A -2.5
#define B 1.5
#define W 6.0
#define N XSIZE
#define WIDE N/2
#define MAXLOOP 255

unsigned char mandel(int i,int j)
{
    double x,y,zx,zy,u,v,max;
    int loop;

    v = W*j/-WIDE + B;
    u = W*i/WIDE + A;

    x = 0;
    y = 0;

    for (loop = 0;loop < MAXLOOP;loop++){
        zx = x*x - y*y + u;
        zy = 2*x*y + v;
        x = zx;
        y = zy;
        max = x*x + y*y;
        if (max >= 10.0){
            return loop;
        }
    }
    return 0;
}

main(int argc,char *argv[])
{
    double stime,etime;
    static unsigned char colour[YSIZE][XSIZE][3];
    unsigned char col;
    int i,j;
    FILE *fd;

    for (j = 0;j < YSIZE;j++){
        for (i = 0;i < XSIZE;i++){
             col = mandel(i,j);
            // 増幅しないと色出ません
             colour[j][i][0] = col | (col << 4);
             colour[j][i][1] = col | (col << 3);
             colour[j][i][2] = col | (col << 2);
        }
    }
    fd=fopen("line.ppm","w");
    fprintf(fd,"P6\n512 512\n255\n");
    fwrite(colour,sizeof(unsigned char),XSIZE*YSIZE*3,fd);
    fclose(fd);
    popen("cjpeg -quality 100 line.ppm>line.jpg","r");
    return 0;
}



この投稿にコメントする

削除パスワード

No.4901

mandel画像
投稿者---si(2005/11/24 01:04:40)


ごめんなさい。
題名リセットするの忘れました。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧




掲示板提供:Real Integrity