//分割数=判定回数、より当たり判定を正確にするための関数 private MyPoint LinerInterlation(MyPoint p, RectFig blk, int divisionNum) { double iniX = p.X - ball.Dx; double iniY = p.Y - ball.Dy; double DxDivided = ball.Dx / (double)divisionNum; double DyDivided = ball.Dy / (double)divisionNum; MyPoint accuratePoint = new MyPoint(iniX, iniY); for (int i = 0; i < divisionNum; i++) { accuratePoint.X += DxDivided; accuratePoint.Y += DyDivided; if (CheckCircleInRect(accuratePoint, blk)) { break; } } ball.setPoint((int)accuratePoint.X, (int)accuratePoint.Y); return(accuratePoint); }
private int CheckEightPoint(Ball ball, RectFig blk) { int x = 10; MyPoint[] p = this.ball.CaliculateEightPoint(); for (int i = 0; i < p.Length; i++) { if (CheckCircleInRect(p[i], blk)) { x = i; break; } } return(x); }
private bool CheckCircleInRect(MyPoint p, RectFig blk) { bool bo = false; double x = p.X; double y = p.Y; //Console.Write("check"); if ((double)blk.X <= x && (double)blk.X + (double)blk.Width >= x) { if ((double)blk.Y <= y && y <= (double)blk.Y + (double)blk.Height) { bo = true; } } return(bo); }