判斷2D平面內某點是否在某個旋轉的矩形(OBB)內的算法

http://stackoverflow.com/questions/7328424/point-in-obb-oriented-bounding-box-algorithmide

 

Given a center point, width, height and angle forming an OBB, how can I find if a given point P is inside the OBB?this

 

I take it that the wrinkle in your problem is that the bounding box can be rotated? If so, the easiest solution to me seems to be to do all calculations in the rotated coordinate plane, centered on the center of the bounding box.spa

To calculate the coordinates of the point relative to these axes:code

newy = sin(angle) * (oldy - centery) + cos(angle) * (oldx - centerx); newx = cos(angle) * (oldx - centerx) - sin(angle) * (oldy - centery);

(you may need to adjust this depending on how angle is supposed to be measured, I'll leave that to you, since you didn't specify)orm

Then hit test, the normal way:ci

return (newy > centery - height / 2) && (newy < centery + height / 2) && (newx > centerx - width / 2) && (newx < centerx + width / 2);
相關文章
相關標籤/搜索