C 平面中两点的边界框
平面上有两点A和点B。我需要找到的是w,x,y和z点,这样我就可以有一个统一的边界框。 条件是wx和yz平行于AB形成一条线。 同样,wBz和xAy是平行的,必须是平行的。 还要注意,角度zwx和wxy是直角。基本上,wxyz必须是一个正方形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 / /
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的反转有点让我不知所措!:)