質問: ### 前提・実現したいこと ここに質問の内容を詳しく書いてください。 processingを用いてpackmanを左から右に口をパクパクさせながら動かすプログラムを作成しているのですが口を開かせることはこのコードで可能なのですがある一定の角度(j=30)に行った時に口を閉じていかせるような動作の実現が出来ません。分かる方いたらアドバイスよろしくお願いします。 ### 発生している問題・エラーメッセージ ``` packmanの口が閉じない ``` ### 該当のソースコード ``` ソースコード```processing void setup(){ size(400,400); smooth(); noStroke(); frameRate(20); } int i=0,j=0,k=0; void draw(){ background(255); fill(200,255,200); arc(i,200,50,50,radians(j),radians(360-k)); i+=5; j+=5; k+=5; } ``` ``` ### 試したこと 条件式でjの値が30を越したらj、kも値を5ずつ少なくしていくなど...。そうするとjが25になった時にまた30に戻ってしまうためうまくいかない。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答: この言語?を知らないので、具体的なコードを提示することはできませんが、自分だったらこうするという考え方を説明いたします ずばり上顎の動作をサイン波にしてしまうことです。つまり、 `上顎の角度 = 上顎の最大角度*sin(j)`とします。 同様にして下顎は、 `下顎の角度 = -下顎の最大角度*sin(j)` のようにします。 余談ですが、質問者様の例・私の例に共通していえることとして、変数`k`は必要ありません(どうせ上顎も下顎も同じ角度で開くのですから、`j`があれば十分です)