笔记----圆和矩形碰撞检测

// f:矩形
// // f_rotation 矩形旋转角度
// c: 圆形 bool collision( float f_x, float f_y, float f_width, float f_height, float f_rotation, float c_x, float c_y, float c_radius) { float sint, cost; float w, h, rx, ry, r; cost = Math.cos(f_rotation); sint = Math.sin(f_rotation); w = f_width; h = f_height; r = c_radius; rx = (c_x - f_x) * cost + (c_y - f_y) * sint; ry = -(c_x - f_x) * sint + (c_y - f_y) * cost; float dx = Math.min(rx, w*0.5f); dx = Math.max(dx, -w*0.5f); float dy = Math.min(ry, h*0.5f); dy = Math.max(dy, -h*0.5f); return (rx - dx)*(rx - dx) + (ry - dy)*(ry - dy) <= r*r; }

猜你喜欢

转载自www.cnblogs.com/wodehao0808/p/9445244.html