Processingでヒルベルト曲線(ペアノ曲線)を描く方法について
Processingでヒルベルト曲線の描画にチャレンジしているのですが, 3番目の描画からどうも繋ぎ目の線が崩れてしまいます.
何か解決策をご提示いただける方いらっしゃいますでしょうか?
また以下のページも参考にしましたが、うまくいきませんでした。
https://teratail.com/questions/129983
Processing
1int n = 0; 2int w = 800; 3int h = 800; 4void setup(){ 5 size(800, 800); 6 textFont(createFont("Tempus Sans ITC", 24)); 7 fill(0); 8 smooth(); 9} 10 11void Peano(int level){ 12 if(level == 1){ 13 line(0.25*w, 0.75*h, 0.25*w, 0.25*h); // draw line 14 line(0.25*w,0.25*h,0.75*w,0.25*h); // draw line 15 line(0.75*w,0.25*h,0.75*w,0.75*h); // draw line 16 return; 17 } 18 else if (level > 1){ 19 20 scale(0.5); 21 // B 22 pushMatrix(); 23 Peano(level - 1); 24 popMatrix(); 25 // C 26 pushMatrix(); 27 translate(w, 0); 28 Peano(level - 1); 29 popMatrix(); 30 // A 31 pushMatrix(); 32 translate(w, h); 33 rotate(PI/2); 34 Peano(level - 1); 35 popMatrix(); 36 // D 37 pushMatrix(); 38 translate(w, 2*h); 39 rotate(-PI/2); 40 Peano(level - 1); 41 popMatrix(); 42 43 line(0.25*w, 0.75*h,0.25*w, 1.25*h); 44 line(0.75*w,0.75*h,1.25*w,0.75*h); 45 line(1.75*w,0.75*h,1.75*w,1.25*h); 46 scale(2); 47 } 48} 49 50void mousePressed(){ 51 //左クリックで1段階進む 52 if((mouseButton == LEFT) && (n < 8)) n++; 53 //右クリックで1段階戻る 54 else if((mouseButton == RIGHT) && (n > 0)) n--; 55} 56void draw(){ 57 background(255); 58 text("n = " + n, 10, 30); 59 Peano(n); 60}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/04 10:59