Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 平面中两点的边界框_C_Algorithm_Math_Geometry_Bounding Box - Fatal编程技术网

C 平面中两点的边界框

C 平面中两点的边界框,c,algorithm,math,geometry,bounding-box,C,Algorithm,Math,Geometry,Bounding Box,平面上有两点A和点B。我需要找到的是w,x,y和z点,这样我就可以有一个统一的边界框。 条件是wx和yz平行于AB形成一条线。 同样,wBz和xAy是平行的,必须是平行的。 还要注意,角度zwx和wxy是直角。基本上,wxyz必须是一个正方形 z / / B / / / w / / y / / / A / /

平面上有两点A和点B。我需要找到的是w,x,y和z点,这样我就可以有一个统一的边界框。 条件是wx和yz平行于AB形成一条线。 同样,wBz和xAy是平行的,必须是平行的。 还要注意,角度zwx和wxy是直角。基本上,wxyz必须是一个正方形

          z
       /   /
     B      /
  /          /
w             /  
 /             y
  /          /
   /      A 
    /  /
     x
基本上,如果AB线平行于x轴或AB线平行于y轴,则很容易找到w、x、y和z。当AB线与x轴成一定角度时,我很难确定w、x、y和z点(AB线的斜率可能为正或负)


如有任何意见/建议,我们将不胜感激。谢谢

将A和B视为平面(xa,ya)和(xb,yb)中的向量。取向量差,生成一个向量C,它指向a到B

C = A - B = (xa - xb, ya - yb) = (xc, yc)
将该向量在每个方向上旋转90度,并缩放一半,得到D=(xd,yd)和E=(xe,ye)

使用矢量算法得到正方形的四个点

w = B + D
x = A + D
y = A + E
z = B + E
编辑:胖手指

EDIT2:忘记了一半的系数

EDIT3:按要求提供矢量旋转参考

要计算出矢量旋转,通常可以使用。在这种情况下,+/-pi/2的正弦和余弦系数最终为+/-1


如果矩阵乘法不是你的拿手好戏,在纸上画(或者想象)任何象限的样本向量。现在,将纸张沿任意方向旋转90度,看看x和y分量是如何交换和取反的。

将A和B视为平面中的向量(xa,ya)和(xb,yb)。取向量差,生成一个向量C,它指向a到B

C = A - B = (xa - xb, ya - yb) = (xc, yc)
将该向量在每个方向上旋转90度,并缩放一半,得到D=(xd,yd)和E=(xe,ye)

使用矢量算法得到正方形的四个点

w = B + D
x = A + D
y = A + E
z = B + E
编辑:胖手指

EDIT2:忘记了一半的系数

EDIT3:按要求提供矢量旋转参考

要计算出矢量旋转,通常可以使用。在这种情况下,+/-pi/2的正弦和余弦系数最终为+/-1


如果矩阵乘法不是你的拿手好戏,在纸上画(或者想象)任何象限的样本向量。现在,将纸张向任意方向旋转90度,看看x和y分量是如何交换和取反的。

如果优化使你的船漂浮,neirbowjs的答案将转化为更优化的解决方案

您知道的变量(Ax、Ay、Bx、By)

求解的变量(Wx,Wy,Xx,Xy,Yx,Yy,Zx,Zy)


neirbowjs的答案转化为更优化的解决方案,如果优化能让你的船漂浮

您知道的变量(Ax、Ay、Bx、By)

求解的变量(Wx,Wy,Xx,Xy,Yx,Yy,Zx,Zy)


我们假设B是WZ的中点,还是盒子可以沿着WX,XY线滑动“左和右”?考虑把这个移动到Mth.StkExchange。或者生成的长方体是菱形而不是正方形?如果菱形是好的,那么在WX和ZY之间的距离为0的菱形可能也很好(例如,W=Z=B,X=Y= A)的线段。我们假设B是WZ的中点,或者盒子可以沿着WX、XY线滑动“左右”?考虑把这个移动到Mth.StkExchange。或者生成的长方体是菱形而不是正方形?如果钻石很好,那么wx和zy之间距离为0的钻石也可能很好(例如,w=z=B,x=y=a的线段)。感谢@neirbowj提供的详细信息。这是否适用于x-y平面(2-d)任何象限中的任何直线,而不管直线的坡度如何?好的,看起来这适用于所有直线。有人能指出一些关于向量旋转的英文文档吗?在D和E增量中x和y的反转有点让我不知所措!:)谢谢@neirbowj提供的详细信息。这是否适用于x-y平面(2-d)任何象限中的任何直线,而不管直线的坡度如何?好的,看起来这适用于所有直线。有人能指出一些关于向量旋转的英文文档吗?在D和E增量中x和y的反转有点让我不知所措!:)