前提・実現したいこと
ご指摘があった為、修正し改めて質問をさせて頂きます。
Processingで木の枝にMinimライブラリを使って大きさを変化させた円を描画させるプログラムを作っています。
円の描画位置は下図のように木の枝の先に木の実がくっ付いている様に見えるイメージを考えています。
※ペイント3Dで編集した画像の為、該当のソースコードの実行画面ではありません。
発生している問題・エラーメッセージ
randomを使って指定範囲内で円の描画をさせていますが、この方法では四角形になってしまい木の枝以外の場所にも円が描画されてしまう。
該当のソースコード
※該当のソースコードはMinimを抜いたサンプルプログラムです。
processing
1float x; 2float y; 3 4void setup() { 5 fullScreen(); 6 smooth(); 7 frameRate(10); 8 colorMode(HSB, 360, 100, 100, 200); 9 10 Tree(30, width/2, height, PI, width/6); //木の太さ・描画位置,PI=π 180° 11 12} 13 14void draw() { 15 x = random(650, 1250); //横 16 y = random(200, 300); //縦 17 noStroke(); 18 fill(random(255), random(255), random(255), 50); 19 ellipse(x,y,10,10); 20 21 fill(#959592); 22 rect(0, 1030, 2000, 50); 23} 24 25//木の生成 26void Tree(float strokeWeight, float x, float y, float rotate, float length) { 27 pushMatrix(); //座標を一時保存 28 translate(x, y); //座標移動 29 rotate(rotate); //座標回転 30 strokeWeight(strokeWeight); //線の輪郭線の太さ 31 stroke(#64482A); //線の色 32 line(0, 0, 0, length); //線の描画,配列の長さ 33 popMatrix(); //変更した座標を元に戻す 34 if (strokeWeight<2)return; 35 if (x%5>3 && strokeWeight<3)return; 36 Tree(strokeWeight*2/3, x-sin(rotate)*length, y+cos(rotate)*length, rotate-PI/10, length*2/3); 37 Tree(strokeWeight*2/3, x-sin(rotate)*length, y+cos(rotate)*length, rotate+PI/10, length*2/3); 38}
補足情報(FW/ツールのバージョンなど)
Processing 3.5.3
発生している問題・エラーメッセージの欄を```で囲むのは、そこに画面上に現れたテキストをそのまま貼った時に表示が乱れないためです。現象をあなたが記述するのなら```で囲む意味はありません。今回は、そこを囲ってしまったために、マークダウン表記がそのまま表示されてしまって、質問に表示されていません(質問を投稿した後自分で見返していないのですか?)。
> 違和感が無いように木の形に合わせた位置
ではあまりに抽象的で分かりかねます。「こうしたい」というのが図で、手描きでいいのであると意図が伝わるんじゃないかと思います。
> Minimライブラリを使って大きさを変化させた円を描画させる
Minimは「音」を扱うためのライブラリです。Minimによって音を解析したデータによって描画を変えるということではあるのでしょうがしかし円の描画には直接関係ありません。情報を削ぎすぎて必要なところが書いてないよりはいいんですけれど、さすがにMinimは関係ないので、余計なところを削いだ(でも動く)サンプルプログラムにしていただけませんか。
質問を修正しました。発生している問題の欄の```を削除しましたが、画像は表示されいるでしょうか?
回答1件
あなたの回答
tips
プレビュー