いつもお世話になっています。
前提・実現したいこと
コンパスを作る。
※円形のコンパスではなく、目盛りが平行になっているコンパスです。
png等のイメージを使わず、コード上で作成したものを使う
→ディスプレイが変わってもコンパスのラベルの比率が画面に対して保たれるようにするため。
発生している問題
以下のソースコードはただただ横に長いラベルのようになっていて、
端っこの36をつなげる具体的な手法が思いつかない。
###打開策?
1)以下ソースコードに書かれてあるラベルが端っこにきたらコピーする。
メリット:円柱とテクスチャとの型指定の齟齬による数値の不一致が無い。
疑問点①:ユーザーやデータの信号で入力された角度をラベルの数値と対応させるには?
疑問点②:円ではなく平面的なラベルなので端っこという限界が出てしまうけれども......
2)円柱にテクスチャとして貼り付ける
メリット:角度指定がrotateY()で出来る為、簡単である。
疑問点:float型の円周の距離(2PIr)とint型のイメージテクスチャではそもそも合致しないのでは?
該当のソースコード
今現在で出来ているラベルは以下のようになっています。
ディスプレイの大きさが変わっても、
文字や線の大きさ、文字や線の間隔が同じ比率になるようにしています。
processing
1String[] azimuth ={"36", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36"} ; 2int azimuth_num = azimuth.length; 3 4float azimuth_distance; 5float azimuth_exist; 6float scale_exist_main, scale_exist_sub; 7float half_width, half_height; 8 9void setup() 10{ 11 size(displayWidth, displayHeight); 12} 13 14void draw() 15{ 16 azimuth_distance = (width*3)/azimuth_num; 17 half_width=width/2; 18 half_height=height/2; 19 background(0); 20 translate(half_width, half_height); 21 stroke(0, 255, 0); 22 translate(0, height/20); 23 fill(0, 255, 0); 24 textAlign(CENTER); 25 textSize(height/50); 26 27 for (int i = 0; i<=azimuth_num-1; i++) 28 { 29 azimuth_exist =(mouseX-half_width)+i*azimuth_distance; 30 scale_exist_main=(mouseX-half_width)+i*azimuth_distance; 31 scale_exist_sub=(mouseX-half_width)+(i*0.5)*azimuth_distance; 32 33 text(azimuth[i], azimuth_exist, -height/30);//数字 34 line(scale_exist_main, 0, scale_exist_main, -height/40);//目盛(数字側) 35 line(scale_exist_sub, 0, scale_exist_sub, -height/70); 36 } 37 line(mouseX-half_width, 0, (mouseX-half_width)+(azimuth_num-1)*azimuth_distance, 0); 38 39 translate(0, -height/20); 40}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。