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

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

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

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

Q&A

解決済

2回答

1001閲覧

プログラム短縮について

toyohasi_24

総合スコア5

Processing

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

0グッド

0クリップ

投稿2020/03/01 04:10

編集2020/03/01 04:46

前提・実現したいこと

ss,mmの中のx=とy=で始まる文をssとmmに同時に割り当てする。また、lineの文をss,mm,hhに一文で割り当てるにはどうすれば良いのでしょうか

発生している問題・エラーメッセージ

エラーはなく正常に運転します。

該当のソースコード

void setup() { size(500,500); background(0); smooth(); } void draw() { background(0); float ss; //second byo float mm; //minute hun float hh; //hour jikan float x,y; float rad; stroke(255); ss = second(); rad =radians(ss*(360/60)-90); strokeWeight(1); x = cos(rad)*200+250; y = sin(rad)*200+250; line(250,250,x,y); mm = minute(); rad =radians(mm*(360/60)-90); strokeWeight(2); x = cos(rad)*200+250; y = sin(rad)*200+250; line(250,250,x,y); hh = hour()+(mm/60.0); rad =radians(hh*(360/12)-90); strokeWeight(4); x = cos(rad)*100+250; y = sin(rad)*100+250; line(250,250,x,y); }

試したこと

if,floatを書き換え、ssとmmを一緒にしようと、+や&を使ったが意味なし。
ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

coco_bauer

2020/03/01 04:42

「同文を短縮させたい」というのは、何がどうなれば良いという事なのですか? 短縮の対象が何なのか、”同文”とは何を意味するのかが理解できません。
toyohasi_24

2020/03/01 04:46

修正しました。分かりづらくてすみません
guest

回答2

0

ベストアンサー

java

1rad =radians(ss*(360/60)-90); 2strokeWeight(1); 3x = cos(rad)*200+250; 4y = sin(rad)*200+250; 5line(250,250,x,y);

この辺りを関数化して纏めれば、短くできそうです。

以下に例を載せます。まだ綺麗に出来ると思います。

java

1void setup() 2{ 3 size(500,500); 4 background(0); 5 smooth(); 6 7} 8void draw() 9{ 10 background(0); 11 float ss; //second byo 12 float mm; //minute hun 13 float hh; //hour jikan 14 15stroke(255); 16 17ss = second(); 18drawClockHand(ss*(360/60)-90, 1, 200); 19 20mm = minute(); 21drawClockHand(mm*(360/60)-90, 2, 200); 22 23hh = hour()+(mm/60.0); 24drawClockHand(hh*(360/12)-90, 4, 100); 25 26} 27void drawClockHand(double deg, double weight, double length) { 28 double rad, x, y; 29 rad =radians(deg); 30 strokeWeight(weight); 31 x = cos(rad)*length+250; 32 y = sin(rad)*length+250; 33 line(250,250,x,y); 34}

動作確認していないので、動かなかったらごめんなさい。

投稿2020/03/01 04:54

編集2020/03/01 04:55
maai

総合スコア463

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

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

toyohasi_24

2020/03/01 05:05 編集

うわー、ありがとうございます! 参考にします!! drawClockHandって、自分で作った名前ですか?
maai

2020/03/01 05:10

自由に名前変えられますよー
toyohasi_24

2020/03/01 05:15

分かりました! 後は頑張ってみます!
guest

0

Clock \ Examples \ Processing.org
map方式

yoppa org – Processingで時計を作る
rotate方式

Browse Sketches - OpenProcessing
選んだあと</>ボタンでコードが見れます。
斬新な方法でやっているのもあるかもしれません。

投稿2020/03/01 04:29

TN8001

総合スコア9244

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

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

toyohasi_24

2020/03/01 04:37

回答ありがとうございます そこら辺一帯は見ました。 けど、短縮されているのは無かったので、参考にはならなかったです。
TN8001

2020/03/01 04:52

もっと劇的に短くしたいということですか。 変数をまとめたり省略することはできるでしょうが、結局1行が長くなるだけのような? 数学的なことは苦手なので案はありません。
toyohasi_24

2020/03/01 05:06

専門で無いという事ですね。了解です。 ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問