前提・実現したいこと
数式を用いてマウスの方向に白目の中で黒目が向くオブジェクトをプログラムしています。エラーは起きていませんが。黒目が白目に収まらず、暴走してしまいます。
発生している問題・エラーメッセージ
エラーメッセージはありません。
該当のソースコード
processing
1Eye eye; 2 3void setup(){ 4 size(200,200); 5 eye=new Eye(100,100,50,20); 6} 7 8void draw(){ 9 background(255); 10 eye.display(); 11} 12class Eye{//classname 13 int x;//feild 14 int y; 15 int w;//white width 16 int b;//black width 17 Eye(int tempX,int tempY,int tempW,int tempB){ 18 x=tempX; 19 y=tempY; 20 w=tempW; 21 b=tempB; 22 } 23 void display(){ 24 fill(255);//white 25 ellipse(x,y,w,w); 26 int dx; 27 int dy; 28 dx=mouseX-x; 29 dy=mouseY-y; 30 float l; 31 l=sqrt(sq(dx)+sq(dy));//sqrt=rute2 sq=^2 32 float ex; 33 float ey; 34 ex=x+(((w-b)*dx)/2*l); 35 ey=y+(((w-b)*dy)/2*l); 36 fill(0);//black 37 ellipse(ex,ey,b,b); 38 } 39} 40 41 42 43
試したこと
数式を見直しました。
補足情報(FW/ツールのバージョンなど)
⽩⽬の直径が w,⽩⽬の中⼼の座標が(x, y),⿊⽬の直径が b,マウスの座標が(mouseX,mouseY)、⿊⽬の中⼼の座標(ex, ey)、マウスの座標と白目の座標の距離をlとしています。
分類:【Processing】オブジェクトを操作できない
で3つ質問立ってますが、これは一つ解決したら全部解決するか、解決の足掛かりになります。
質問するときは
オブジェクトの色(→状態)を変更できない。
オブジェクトの向き(→状態)を変更できない。
等別の言い方に変えて同じ質問じゃないか判断してから質問しましょう
通常、プログラムにおいて「暴走」というは制御不能になることであって、今回のように異常に動きが大きいだけのものは暴走とはいいません。
「試したこと」の欄は「自分はなにかやった、頑張っているんだ」というアピールのためにあるのではありません。問題解決につながるかも知れないと考えてあなたがやったこと、そして起きたこと(あるいは起こらなかったこと)を結果まで書いて下さい。それが解決への手がかりになる...かも知れません。
回答2件
あなたの回答
tips
プレビュー