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

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

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

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

Q&A

解決済

1回答

250閲覧

非円形コンパスを作るには

P5_USER

総合スコア73

Processing

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

0グッド

0クリップ

投稿2018/02/23 02:32

編集2018/02/26 05:02

いつもお世話になっています。

前提・実現したいこと

コンパスを作る。
※円形のコンパスではなく、目盛りが平行になっているコンパスです。

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}

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

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

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

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

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

guest

回答1

0

自己解決

こちらを参考にできました。

投稿2018/02/27 04:31

P5_USER

総合スコア73

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問