• 締切済み

プロセッシングのmap関数

プロセッシングで、float x =map(a,b,c,d,e)の使い方が分からないので教えてください。

みんなの回答

  • _kappe_
  • ベストアンサー率68% (1522/2216)
回答No.1

map(a,b,c,d,e)だったら、「b〜cの範囲をd〜eの範囲に移すような変換を考えたとき、元のaの値がどんな値に変換されるか」を返します。 x = map(a, 100, 200, 300, 500)を例にします。100〜200の範囲を300〜500の範囲に変換するわけです。 ・a=100のとき:x=300 ・a=200のとき:x=500 ・a=150のとき:x=400 ・a=110のとき:x=320 のようになります。 公式の説明(英語)はhttps://processing.org/reference/map_.htmlにあります。

KTOU20230328
質問者

お礼

分かりやすかったです。ありがとうございます。

関連するQ&A

  • プロセッシングが出来ません。

    プロセッシングをしていて、ずっと「java.lang.NullPointerException」が出ています。 ですが、どこで起きているのかわかりません。 わかる人いたら教えてください。 String sc_data[]; int sc[][] = new int[sc_data.length][4]; void setup() { int dow, i; frameRate(1); size(480,640); sc_data = loadStrings("schedule.txt"); System.out.println(sc_data.length); for(i = 0; i < sc_data.length; i++){ sc[i] =int( sc_data[i].split(",")); println(sc[i]); } } int idx,k; int mo,d,h,m,s; int c_w = 60; float b_c,he,y; void set_color(int idx){ switch(idx){ case 1: fill(77,166,255,100); break; case 2: fill(128,255,0,100); break; case 3: fill(245,112,112,100); break; case 4: fill(117,125,198); break; case 5: fill(151,247,242); break; case 6: fill(255,214,70); break; case 7: fill(147,38,255); break; case 8: fill(2,214,70); break; case 9: fill(253,198,230); break; } } void make_sc(float y, int s[][], float t,int o){ int l; fill(255,255,255,100); rect(0,70,c_w,height); y = s[o][0]*25 + s[o][1]*5/12; t = s[o][2]*5/12; println(t); l = s[o][3] + 3; set_color(l); rect(0, y, c_w,t); } void barclock(float b){ b = h*25+m*5/12; //println(b); noStroke(); if ((b >= 0)&&(b < 150)){ set_color(1); } else if ((b >= 150)&&(b < 225)){ set_color(2); } else if ((b >= 225)&&(b < 450)){ set_color(3); } else { set_color(4); } rect(0,0,width,b); fill(0); textSize(15); text(+mo+" / "+d+" "+h+":"+m+":"+s,5,49); } void draw() { mo= month(); d = day(); h = hour(); m = minute(); s = second(); background(255); strokeWeight(1); barclock(b_c); for(int i = 0; i < sc_data.length; i++){ make_sc(y, sc, he,i); } }

  • 関数について。

    実数の定数a,b,c,d,eを係数にもつ2つの関数 f(x)=ax^4+bx^3+cx^2+dx+e g(x)=4ax^2+3bx-2(a-c) を考える。-2≦x≦2を満たす全ての実数xで f(x)≧g(x) であるならば、 max{|a|,|b|,|c|,|d|}≦|e| が成り立つことの証明を教えて下さい。

  • 次のプログラムを教えてほしいのですが・・・・

    #include<stdio.h> main() { int a,b,c,d,e; a=1;b=3;c=5;d=7;e=8; float X; X = (a+b+c+d+e)/5.0; printf("Y =%f\n",X); } X=4.8 となるプログラムですが、Xという変数を用いています。 これを変数を用いず、4.8を導きだせ という宿題が出ました。 全くわからないので詳しい方回答お願いします。

  • map関数についての質問です

    お世話になります、連続の質問になりますが宜しくお願いします $arg_[0]<>$arg_[1]<>$arg_[2]<>$arg_[3] という具合な配列をmap関数を使って open(OUT,">>$logfile") || &error("Write Error : $logfile"); print OUT join('<>',(map{$arg_.[$_]} (0..3)),); close(OUT); として、ファイルに書き込むと 事前にセットした変数値ではなく ARRAY(0x81e4c10)<>ARRAY(0x81e4c4c)<>ARRAY(0x81e4c88)<>ARRAY(0x81e4cc4)<> こういう具合になってしまいます、正しく $arg_[0]<>$arg_[1]<>$arg_[2]<>$arg_[3] にセットした値を書き込むコードを教えて頂けませんでしょうか。

    • ベストアンサー
    • Perl
  • SUMPRODUCT関数について

    excel2010 SUMPRODUCT関数で、式の内容が理解できず教えてください。 sheet1に、A22からAM1047までデータがあります。B,E列を参照し、 sheet2のA、Cに設定された内容で抽出するという内容になっています。 具体例を下記に示します。 sheet1の構成 A1~AM21までは題目が記載されています。抽出したいデータ対象ではありません。 A列は見出しの内容でほとんど空欄です。 A427セルに本体、以降空欄が続きA490セルにヘッド、また空欄が続きA544セルに 見出しの内容といった感じです。 B22~B30セルにX001という識別コード(同じものが9) B30~B39セルにX002という識別コード(同じものが9) 以降、識別コードがB1047セルまで入ります。 E22~E30までは、a,b,c,d,e,f,g,h,iという検索内容が入ります。 以降同じ検索内容が続きます。 H22~H1047まで数字のデータが入ります。 上記以外の列は無関係なので説明省略。 下記のイメージです。 A1からAM20までにも何かしら内容が入っていますが、関係ないので説明省略。 A21の様に記載しているのはセルアドレス、その直下は入っている内容です。 A21  B21   E21     H21 名称  コード  検索     3月2日 A22  B22   E22     H22 準備  X001   a      0     X001   b      3     X001   c      2     X001   d      5     X001   e      2     X001   f      0     X001   g      3     X001   h      0     X001   i      0     X002   a      4     X002   b      7     X002   c      0     X002   d      0     X002   e      1     X002   f      3     X002   g      0     X002   h      0     X002   i      3  … A427  B427  E427    H427 本体  X701   a      0     X701   b      0     X701   c      1     X701   d      0     X701   e      2     X701   f      3     X701   g      0     X701   h      0     X701   i      1 … A490 ヘッド X792   a      4     X792   b      7     X792   c      2     X792   d      0     X792   e      1     X792   f      3     X792   g      0     X792   h      0     X792   i      3 sheet2は A1     C1  D1 コード   検索 X001    c   2 X002    c   0 X003    c   0 X004    c   0 X005    c   0 X006    c   0 X007    c   0 X008    c   0 X009    c   0 … X701    c   1 X792    c   2 の様にコードと検索条件でD列にsheet1からデータをひっぱってきたいのです。 下記はsheet2のD27セルに設定した内容です。 =IF(SUMPRODUCT((Sheet1!$B$22:$B$1047=$A27)*(Sheet1!$E$22:$E$1047=$C27)), INDEX(Sheet1!H$22:H$1047,SUMPRODUCT((Sheet1!$B$22:$B$1047=$A27)*(Sheet1!$E$22:$E$1047=$C27)*(ROW(sheet1!$A$1:$A$1026)))),"-") webや過去のokwebのsumproduct関数について調べた上で上記式にたどり着き、この内容で、sheet1の内容をひっぱってくるので良いのですが、 最後の*(ROW(sheet1!$A$1:$A$1026))の部分が理解できません。 疑問の内容は、下記2点 (1)単独でROW(sheet1!$A$1:$A$1026)を実施すると1になります。 しかしながら、 =IF(SUMPRODUCT((Sheet1!$B$22:$B$1047=$A27)*(Sheet1!$E$22:$E$1047=$C27)), INDEX(Sheet1!H$22:H$1047,SUMPRODUCT((Sheet1!$B$22:$B$1047=$A27)*(Sheet1!$E$22:$E$1047=$C27)*1)),"-") としてフィルハンドコピーすると、全ての行が27行目の値になってしまいます。 何故1ではだめなのでしょう? (2)データの範囲はA22からAM1047なので範囲を下記の様に同じにしてみました。 *(ROW(sheet1!$A$1:$A$1026))→*(ROW(sheet1!$A$22:$A$1047)) とすると全く正しく抽出されません。0になってしまいます。 *(ROW(sheet1!$A$1:$A$1026))が*(ROW(sheet1!$A$1:$A$1025)) の様に設定すると#N/Aとなり、抽出する設定条件で必要なのですが、 この*(ROW(sheet1!$A$1:$A$1026))の意味を教えていただきたく。

  • エクセルで三次関数をつくりたいのですが

    検量線を三次関数で書きたいというヒトから質問を受けたのですが、 y=4E-11x^3-3E-7x^2+0.0007x というような式をエクセルで作成する場合、こんな式の作り方で合っているのでしょうか? y=a(exp(1)+b)x^3+c(exp(1)+d)x^2+ex a=4 b=-11 c=-3 d=-7 e=0.0007 また、基本的なことですが「E」とは自然対数の底(≒2.71828)で合っていますか?

  • 関数へのポインタ

    C言語で科学計算をやらなければならない状況になりました。 そこで質問です。 ものすごく基本的なことだと思うのですが・・・ aからbまで積分をするルーチンが以下のように与えられています。 float qromb(float (*func)(float), float a, float b) { ・・・・・ } これを使うときの呼び出し方がわからないのです。 a,bは積分の下限・上限なので例えば 0,1 として、 s= qromb(float (*func)(float), 0, 1 ); のようにすればいいと思うのですが、 (*func)(float) の部分がよくわかりません。 例えば、f(x)=x を0~1で積分するようなときは、 どのような宣言をして、どのようにルーチンを呼び出せばいいのでしょうか。 またこの(*func)(float) は何を意味しているのでしょうか? とても基本的なことだとは思うのですが、よろしくお願いします。

  • MK MAP Viewが使えない

    Xcode初心者です。Map Kit ViewをMain.Storyboardにドラッグ&ドロップして、そのままCommand + Rすると、以下のような出力が出てビルドができません。なぜでしょうか? ==スペック== X Code: 8.3.1 Mac OS:Sierra 10.12.4 ==以下エラー== 2018-03-07 21:47:38.747 MAP2[1095:26605] *** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named MKMapView' *** First throw call stack: ( 0 CoreFoundation 0x000000011125ab0b __exceptionPreprocess + 171 1 libobjc.A.dylib 0x000000010e5eb141 objc_exception_throw + 48 2 CoreFoundation 0x00000001112c3625 +[NSException raise:format:] + 197 3 UIKit 0x000000010f0b533d UINibDecoderDecodeObjectForValue + 323 4 UIKit 0x000000010f0b564d UINibDecoderDecodeObjectForValue + 1107 5 UIKit 0x000000010f0b51ef -[UINibDecoder decodeObjectForKey:] + 89 6 UIKit 0x000000010eb5019d -[UIView initWithCoder:] + 944 7 UIKit 0x000000010f0b54af UINibDecoderDecodeObjectForValue + 693 8 UIKit 0x000000010f0b51ef -[UINibDecoder decodeObjectForKey:] + 89 9 UIKit 0x000000010eec4c20 -[UIRuntimeConnection initWithCoder:] + 178 10 UIKit 0x000000010f0b54af UINibDecoderDecodeObjectForValue + 693 11 UIKit 0x000000010f0b564d UINibDecoderDecodeObjectForValue + 1107 12 UIKit 0x000000010f0b51ef -[UINibDecoder decodeObjectForKey:] + 89 13 UIKit 0x000000010eec3e1d -[UINib instantiateWithOwner:options:] + 1262 14 UIKit 0x000000010ec5ec73 -[UIViewController _loadViewFromNibNamed:bundle:] + 381 15 UIKit 0x000000010ec5f589 -[UIViewController loadView] + 177 16 UIKit 0x000000010ec5f8ba -[UIViewController loadViewIfRequired] + 195 17 UIKit 0x000000010ec6010a -[UIViewController view] + 27 18 UIKit 0x000000010eb2863a -[UIWindow addRootViewControllerViewIfPossible] + 65 19 UIKit 0x000000010eb28d20 -[UIWindow _setHidden:forced:] + 294 20 UIKit 0x000000010eb3bb6e -[UIWindow makeKeyAndVisible] + 42 21 UIKit 0x000000010eab531f -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 4346 22 UIKit 0x000000010eabb584 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1709 23 UIKit 0x000000010eab8793 -[UIApplication workspaceDidEndTransaction:] + 182 24 FrontBoardServices 0x000000011296a5f6 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 24 25 FrontBoardServices 0x000000011296a46d -[FBSSerialQueue _performNext] + 186 26 FrontBoardServices 0x000000011296a7f6 -[FBSSerialQueue _performNextFromRunLoopSource] + 45 27 CoreFoundation 0x0000000111200c01 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 28 CoreFoundation 0x00000001111e60cf __CFRunLoopDoSources0 + 527 29 CoreFoundation 0x00000001111e55ff __CFRunLoopRun + 911 30 CoreFoundation 0x00000001111e5016 CFRunLoopRunSpecific + 406 31 UIKit 0x000000010eab702f -[UIApplication _run] + 468 32 UIKit 0x000000010eabd0d4 UIApplicationMain + 159 33 MAP2 0x000000010e014c67 main + 55 34 libdyld.dylib 0x00000001121fa65d start + 1 35 ??? 0x0000000000000001 0x0 + 1 ) libc++abi.dylib: terminating with uncaught exception of type NSException (lldb

  • 分数関数で行き詰まっています。

    ∫(2x)/[(x+1){(x^2)+1}^2]dx これを、A/(x+1)+(Bx+C)/(x^2+1)+(Dx+E)/(x^2+1)^2とおくと、 A=-1/2 B=1/2 C=-1/2 D=1 E=1になりました。 しかし、そこから先の積分で、 ∫(x-1)/{2(x^2+1)や、 ∫(x+1)/(x^2+1)^2がわかりません あと一歩な気がするのですが。。。

  • エクセル関数のことで困っています。

    今、簡単な表計算の表を作っていますが、先に進まず困っています。 A1~A200のセルに1~200の番号が昇順で入っています。そしてデータとして,B2,C2,D2,E2 に各々a、b、c、dが入っており,,B3,C3,D3,E3 にa1、b1、c1、d1・・・・・・・・・・・・B200,C200,D200,E200にw,x,y,zのようにB,C,D,E列に適当な数が入っています。 そこで、E列の値で昇順  SMALL(D$1:D$200,A1)  に並べ替え、同時にB,C,D,Eの値も返したいのです。つまりエクセルの並べ替え機能を関数で自動で行いたいのです。 今は、関数の、ROW,SUMPRODUCT,COUNT,INDEX,LARGE,COUNTIF,COLUMN,などを使い関数バーに5行ほどになり、処理にとても時間がかかります。 何とか、簡単で早い計算式はないでしょうか。 よろしくおねがいします。

専門家に質問してみよう