何が違うかわからない
Posted: 2012年10月11日(木) 21:16
線分と円の当たり判定が、リンク先のサイトのとおりにやってもうまくいきません。
どうしたらいいでしょうか?
http://d.hatena.ne.jp/Sampo/20070626/p1
どうしたらいいでしょうか?
http://d.hatena.ne.jp/Sampo/20070626/p1
int cx=800,cy=450;//円
double radius=50;
int lx=1000,ly=450;//線は角度と長さでもって、もう片方の座標は計算してだす。
double angle2=0;
double range=100;
double tmpax = cos(angle2)*range - lx;
double tmpay = sin(angle2)*range - ly;
double tmpbx = cx - lx;
double tmpby = cy - ly;
double tmpr = (tmpax*cos(angle2)*range + tmpay*sin(angle2)*range) / (tmpax*tmpax + tmpay*tmpay);
double tmpx,tmpy;
if( tmpr<= 0 ){
tmpx=lx;
tmpy=ly;
}else if( tmpr>=1 ){
tmpx=cos(angle2)*range;
tmpy=sin(angle2)*range;
}else{
tmpx = lx + tmpr*lx;
tmpy = ly + tmpr*ly;
}
if((tmpx-cx)*(tmpx-cx)+(tmpy-cy)*(tmpy-cy)<=(radius*radius)){
DrawFormatString(50,50,52154,"あたり");
}else{
DrawFormatString(50,50,52515,"はずれ");
}
DrawCircle(cx,cy,radius,421412,0);
DrawLine(lx,ly,lx+cos(angle2)*range,ly+sin(angle2)*range,421412,0);