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

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

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

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

Q&A

解決済

2回答

411閲覧

processingのthisとmap();メソッドについて

mana_mana419

総合スコア27

Processing

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

0グッド

0クリップ

投稿2020/02/03 10:27

お世話になります。
processingを勉強していて、下のコードでsoundライブラリを扱っている時に、サウンドファイルを読み込む際になぜ引数にthisがあるのかわかりませんでした。

またマウスのいちでパンや再生スピードを変える際に使用したmap()メソッドについて理解がまだ危ういと思い、確認したいです。
まず、panで使用しているmap()はmouseXの位置が0widthの範囲を-1.01.0の値に置き換えるということで、マウスのX座標が0に近くなるほど-1.0に近くなり、widthに近くなるほど1.0に近くなる。という認識であっていますでしょうか?

processing

1import processing.sound.*; //soundライブラリを読み込む 2SoundFile soundfile; //サウンドプレイヤ 3 4void setup(){ 5 size(800,600); 6 7 //サウンドファイルを読み込んでプレイヤを初期化する 8 soundfile = new SoundFile(this,"aaa.aiff"); 9 soundfile.loop(); //ループ再生 10} 11 12void draw(){ 13 background(0); 14 15 //マウスのX座標の位置でパン(左右の定位)を変更 16 soundfile.pan(map(mouseX,0,width,-1.0,1.0)); 17 18 //マウスのY座標の位置で再生スピードを変更する 19 soundfile.rate(map(mouseY,0,height,0.25,4.0)); 20 21 //マウスの位置を交差する線で表示する 22 noFill(); 23 stroke(255); 24 line(mouseX,0,mouseX,height); 25 line(0,mouseY,width,mouseY); 26}

上手くまとめられず、読みづらくてすいません。もしわかる方がいらっしゃいましたら、是非お力をお貸しいただけたら嬉しいです。
よろしくお願いいたしますm(_ _)m

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

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

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

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

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

guest

回答2

0

Processingのトップレベルは、実行環境のJAVAにおいてはPAppletというクラスになります。
ちゃんとした話は私も知りませんが、Processingの実行環境を丸抱えしているクラス、ということで音を出したりいろいろするのならそのクラスの機能を使うのでthisでPAppletクラスの情報をもらって動作する、ということでしょう。


mapは、

Processing

1float map(float val, float start1, float stop1, float start2, float stop2) { 2 return (val-start1)/(stop1-start1) * (stop2-start2) + start2; 3}

という処理をしているものと思われます。

Processing

1float mapp(float val, float start1, float stop1, float start2, float stop2) { 2 return (val-start1)/(stop1-start1) * (stop2-start2) + start2; 3} 4 5void setup(){ 6 float val=random(-100,100); 7 float start1=random(-100,100); 8 float stop1=random(-100,100); 9 float start2=random(-100,100); 10 float stop2=random(-100,100); 11 println(map(val, start1,stop1, start2,stop2)); 12 println(mapp(val, start1,stop1, start2, stop2)); 13}

とすると、同じ値が表示されます。

投稿2020/02/05 13:37

thkana

総合スコア7629

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

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

mana_mana419

2020/02/05 22:08

細かく仕組みまで教えていただきありがとうございます!thisの意味がわかった気がしました( ´ ▽ ` )
guest

0

ベストアンサー

なぜ引数にthis

そういうものだから
リファレンス

map()は…

はいそうです。
リファレンス

投稿2020/02/03 10:52

ozwk

総合スコア13521

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問