zoukankan      html  css  js  c++  java
  • 判断2D平面内某点是否在某个旋转的矩形(OBB)内的算法

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

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

    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.

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

    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)

    Then hit test, the normal way:

    return (newy > centery - height / 2) && (newy < centery + height / 2) 
        && (newx > centerx - width / 2) && (newx < centerx + width / 2);
  • 相关阅读:
    epoll示例
    realloc的使用误区
    pyCharm最新激活码(2018激活码)
    python程序打包成.exe
    VS2017下载安装
    C# Cache缓存读取设置
    WPF中展示HTML
    Aspose Word模板使用总结
    js alert(“”)弹框 自定义样式
    利用反射将Model转化为sql
  • 原文地址:https://www.cnblogs.com/pulas/p/3831997.html
Copyright © 2011-2022 走看看