ホームページ > ウェブフロントエンド > jsチュートリアル > p5.j​​s ピタゴラツリー実装コード

p5.j​​s ピタゴラツリー実装コード

亚连
リリース: 2018-05-26 15:47:51
オリジナル
1758 人が閲覧しました

この記事では主に p5.js ピタゴラス ツリーの実装コードを紹介しますので、参考にしてください。

この記事では、p5.js ピタゴラス木の実装コードを紹介し、皆さんと共有します。詳細は次のとおりです:

効果は次のとおりです:

Mainメソッド

  1. translate( )

  2. rotate()

  3. rect()

  4. push()

  5. pop()

  6. map()

再帰

スケッチ

プロセス分解

1. ピタゴラス木の再帰関数

function Pythagorian(x){
 noStroke();
 fill(107, 142, 35,map(x, 0, a, 150, 255));//根据正方形边长设置填充色
 rect(0,0,x,x);//绘制当前的正方形
 
 if(x <= 3) return 0;//当正方形边长小于3时,结束递归

 /* 绘制右上角的正方形 */ 
 push();
 rotate(PI / 2 - t);//坐标轴顺时针旋转约37deg
 translate(0,-x/5 * 3 - x/5*4);//坐标轴向上平移3边+4边的长度
 Pythagorian(x/5*4);//递归调用毕达哥拉斯函数
 pop();
 
 /* 绘制左上角的正方形 */
 push();
 rotate( - t);//坐标轴逆时针旋转约53deg
 translate(0,-x/5 * 3);//坐标轴向上平移3边的长度
 Pythagorian(x/5*3);//递归调用毕达哥拉斯函数
 pop(); 
 
}
ログイン後にコピー

2.変数を再設定してキャンバスを作成します

var a = 100; //最大正方形边长
var t;//4边所对应的角度
function setup(){
 t = 53.1301024 / 360 * 2 * PI;//约为53deg
 createCanvas(windowWidth, windowHeight);//创建画布
 background(255);
 noLoop();//draw()函数只执行一次
}
ログイン後にコピー

Three , ピタゴラスの木を描き始めましょう

function draw(){
 translate(windowWidth/2, windowHeight - a * 2);//将坐标系平移至画布中间底部
 Pythagorian(a);//调用毕达哥拉斯递归函数
}
ログイン後にコピー

ピタゴラスの木を描くための完全なコードです

​​

var a = 100;
var t;
function setup(){
 t = 53.1301024 / 360 * 2 * PI;
 createCanvas(windowWidth, windowHeight);
 background(255);
 noLoop();
}
function draw(){
 translate(windowWidth/2, windowHeight - a * 2);
 Pythagorian(a);
 
}
function Pythagorian(x){
 noStroke();
 fill(107, 142, 35,map(x, 0, a, 150, 255));
 rect(0,0,x,x);
 
 if(x <= 3) return 0;
 
 push();
 rotate(PI / 2 - t);
 translate(0,-x/5 * 3 - x/5*4);
 Pythagorian(x/5*4);
 pop();
 
 push();
 rotate( - t);
 translate(0,-x/5 * 3);
 Pythagorian(x/5*3);
 pop(); 
 
}
ログイン後にコピー

上記は私がまとめたもので、将来的に皆さんのお役に立てれば幸いです。

関連記事:

ajaxファイルのアップロードによりブラウザの互換性問題が正常に解決

バイナリバイトストリームデータを送受信するAjaxメソッド

laypageフロントエンドページングプラグインはAjax非同期ページングを実装


以上がp5.j​​s ピタゴラツリー実装コードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート