- ベストアンサー
ボール同士の衝突
2個のボールが衝突したときのおかしな挙動に困っています。 ちゃんと跳ね返るときもあれば、 いきなり高速移動する くっついたまま離れない。 以下が衝突時の関数です。 アドバイス等お願いします。 bool NearBall=false; void CBallBallView::BallCounter(CPoint *Pos1,CPoint *Pos2,int Radian1,int Radian2,Vector *Vec1,Vector *Vec2,double *SinB,double *CosB,double *SinD,double *CosD) { int Width=Pos1->x-Pos2->x; int Height=Pos1->y-Pos2->y; if(Width==0){return;} if((Radian1+Radian2)*(Radian1+Radian2)>=Width*Width+Height*Height &&NearBall==false) { double Cos=Width/sqrt((double)(Height+Width)*(Height+Width)); double Sin=Height/sqrt((double)(Height+Width)*(Height+Width)); double Tan=Sin/Cos; double tmpCos1; double tmpSin1; double tmpCos2; double tmpSin2; double SinA=*SinB; double CosA=*CosB; double SinC=*SinD; double CosC=*CosD; tmpCos1=(2*Cos*Cos-1)*CosA+2*Sin*Cos*SinA; tmpSin1=2*Sin*Cos*CosA-(2*Cos*Cos-1)*SinA; tmpCos2=(2*Cos*Cos-1)*CosC+2*Sin*Cos*SinC; tmpSin2=2*Sin*Cos*CosC-(2*Cos*Cos-1)*SinC; *CosB=-tmpCos1; *SinB=-tmpSin1; *CosD=-tmpCos2; *SinD=-tmpSin2; NearBall=true; } else { if((Radian1+Radian2)*(Radian1+Radian2)<Width*Width+Height*Height-300) { NearBall=false; } } }
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
- 数学IIの三角関数の和と積の問題について
青チャートの問題で sinA+sinB+sinC=4cosA/2cosB/2cosB/2 を証明せよ という問題で sinA+sinB+sinC が 2sin(A+B)/2・cos(A+B)/2+sin・2(A+B) になるまでは分かったのですが、これがどうして 2sin(A+B){cos(A-B)/2+cos(A+B)/2} に変形されるのかが分かりません。教えてください。
- ベストアンサー
- 科学
- 和積の公式を用いた不等式の証明
入試で頻出ではないと思うのですが 青チャート完璧にしたほうがいいとおもって この問題ききにきましたー。 三角形ABCにおいてsinA+sinB+sinC= 4cosA/2・cosB/2・cosC/2 を証明しなさい A+B+C=π なのでC=π-(A+B) cosC/2=cos(π/2 - (A+B)/2)=sin(A+B) である ゆえに2sin(A+B)/2・cos(A-B)+sin2・(A+B)/2 =2sin(A+B)/2(cos(A-B)/2 + cos(A+B)/2) =2cosC/2・2cosA/2・cos(-B/2) =4cosA/2・cosB/2・cosC/2 というのが回答 最後の下から三番目の式以降がわかりません。 どういった変形をしているのか。 アドバイスまってます。
- ベストアンサー
- 数学・算数
- 数学・sinθ・cosθについてです
cosA:cosB:cosC=sinA:sinB:sinCの時、三角形ABCはどのような形といえるのでしょうか。自分では分からなかったので、ご存知の方、ご教授いただけるとありがたいです…
- ベストアンサー
- 数学・算数
- △ABCにおいて、a/5=b/4=c/=6のとき、
△ABCにおいて、a/5=b/4=c/=6のとき、次の比を最も簡単な整数で表せ。 (1)sinA:sinB:sinC (2)cosA:cosB:cosC わかりやすく説明あると嬉しいです!
- 締切済み
- 数学・算数
- △ABCの内角をABCとするとき,以下を説明せよ。
△ABCの内角をABCとするとき,以下を説明せよ。 (1)sinA+sinB+sinC=4cos(A/2)cos(B/2)cos(C/2) (2)sin(2A)+sin(2B)+sin(2C)=4sinAsinBsinC (3)tanA+tanB+tanC=tanAtanBtanC (1)ですが, sinA+sinB+sinC =sinA+sinB+sin(π-(A+B)) =sinA+sinB+sin(A+B) =sinA+sinB+sinAcosB+cosAsinB =sinA(1+cosB)+sinB(1+cosA) =4sin(A/2)cos(A/2)cos^2(B/2)+4sin(B/2)cos(B/2)cos^2(A/2) =4cos(A/2)cos(B/2)(sin(A/2)cos(B/2)+cos(A/2)sin(B/2)) =4cos(A/2)cos(B/2)sin((A+B)/2) =4cos(A/2)cos(B/2)cos(C/2). のようなことを調べたのですが, sinA+sinB+sin(π-(A+B)) =sinA+sinB+sin(A+B) のところがどうしてそうなるのか分かりません。教えてください。
- ベストアンサー
- 数学・算数
補足
回答ありがとうございます。 Cos がコサインで Sin がサインのつもりなら上の式が おかしいと気付く筈 >>気がつきました。すみません。 >>大分動きがスムーズになりました。 Radian1=ボール1の半径 Radian2=ボール2の半径 Vec1=今現在は不要 Vec2=今現在は不要(最初、x軸y軸の正負でひっくり返そうと思っていましたが、cos,sinでよくなりました。) SinB=ボール1のsin CosB=ボール1のcos SinD=ボール2のsin CosD=ボール2のcos if判定で, ボールの半径1とボールの半径2の和を2乗したものを ボールの中心同士の距離を2乗したものと比べました。 遅いボールに速いボールが後ろから追跡するときに 接触時に引っ張っているような感じです。