質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

1回答

882閲覧

ループ関数とvertexについて質問

YasuhiroShimizu

総合スコア0

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

2クリップ

投稿2021/11/26 13:59

(int)というのはどういった意味でしょうか。最初に変数を宣言する場合、整数であることを意味しているのは分かるのですが、()をつけて、しかもmap関数の前に配置する意味を知りたいです。

以下のbeginShapeから始まるコードを起動させると、3角形から6角形とさまざまな図形が表示されます。
ループ関数なので、vertexのx,yが繰り返されているのは分かるのですが、なぜ毎回図形の形が変わるのか、
また図形の法則性がわかりません、、

beginShape();
for (int i=0; i<=circleResolution; i++){
float x = 0 + cos(anglei) * radius;
float y = 0 + sin(angle
i) * radius;
vertex(x, y);
}

以下コードです。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

void setup(){
size(720, 720);
smooth();
noFill();
background(255);
}

void draw(){
if(mousePressed){
pushMatrix();
translate(width/2,height/2);

int circleResolution = (int)map(mouseY+100,0,height,2, 10); float radius = mouseX-width/2 + 0; float angle = TWO_PI/circleResolution; strokeWeight(2); stroke(random(90),random(70),random(50),random(80)); beginShape(); for (int i=0; i<=circleResolution; i++){ float x = 0 + cos(angle*i) * radius; float y = 0 + sin(angle*i) * radius; vertex(x, y); } endShape(); popMatrix();

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

(int)というのはどういった意味でしょうか。

(int) は型キャストと言い、型を変換するのに用います。
map(a,b,c,d,e) 関数はab-cの範囲からd-eの範囲に変換する関数です。float 型を返す関数である為、int 型に変換するのに使用されています。

int circleResolution = (int)map(mouseY+100,0,height,2, 10);

この circleResolution は変数名からすると円を何分割するか(何角形にするか)を決めているのだと思います。
マウスのY座標の位置に応じて 2~10 角形を作るようにしているようです。

また図形の法則性がわかりません、、

円を描くのに三角関数を用いて表現することができます。よくある例としては単位円の説明で出てきます。
・x が赤色の動き(左右の動き)… cos カーブ
・y が青色の動き(上下の動き)… sin カーブ
この 点P(x,y) の座標をプロットすると円を描くことができます。

そして、細かくプロットすると円ですが、一定の角度毎にプロットすると多角形が描画できます。
例えば、
・30度づつプロットすれば十二角形
・60度づつプロットすれば六角形
・120度づつプロットすれば三角形
といった感じです。

以下は十二角形/六角形/三角形の描画例になります。

■ 十二角形の例(30度づつプロットした場合の例)
十二角形の例

■ 六角形の例(60度づつプロットした場合の例)
六角形の例

■ 三角形の例(120度づつプロットした場合の例)
三角形の例

processing

1// 円の分割数ぶんループ(N角形を描画する) 2for (int i=0; i<=circleResolution; i++){ 3 float x = 0 + cos(angle*i) * radius; // cos(角度×i) × 半径 … 赤色の動き 4 float y = 0 + sin(angle*i) * radius; // sin(角度×i) × 半径 … 青色の動き 5 vertex(x, y); // 頂点をプロット 6}

<参考>
■ 型キャスト | Javaコード入門
https://java-code.jp/66
■ Processing: map関数を使おう
https://scrapbox.io/ZawaBlogs/Processing:_map%E9%96%A2%E6%95%B0%E3%82%92%E4%BD%BF%E3%81%8A%E3%81%86
■ 三角関数 - Qiita
https://qiita.com/rakusan/items/2f60f2ae6af208dda40f

投稿2021/11/26 16:38

編集2021/11/28 05:39
cx20

総合スコア4633

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問