2017-02-02 40 views
0

嗨,很抱歉令人困惑的标题。找到3个长方形的长度,以便它们共享一个角以形成一个三角形,给定一个共同的宽度和3个点

我试图让使用点的赛道。我想画出3个矩形,形成我的道路。不过,我不希望这些矩形重叠,我想在它们之间留出一个空白空间来放置我的角(三角形),这意味着它们只在一个点上相交。由于道路具有相同的宽度,我知道矩形的宽度。

enter image description here

我知道点A的坐标,B和C,并且因此它们的长度和它们之间的角度。由此我想我可以说,黄色三角形的角度与外三角形的角度相同。从那里我可以计算出蓝色三角形边的长度。然而,我不知道如何找到蓝色三角形的点的坐标或黄色三角形的边长以及矩形的长度。

+0

感谢您的反馈。我编辑了我的答案,使其更清晰。 –

回答

1

这是X-Y问题(问我们如何完成X,因为你认为它会帮助你解决问题Ÿ较好地解决了另一种方式),但幸运的是你给了我们Ÿ这样我就可以回答这个问题。

你应该做的是发现,是道路的边缘线,揣摩出它们相交,并继续计算一切事情,从别人。

首先,给定2分PQ,我们可以以参数化形式记下它们之间的界线,如f(t) = P + t(Q - P)。请注意,Q - P = v是表示线条方向的向量。

其次,给出一个矢量v = (x_v, y_v)矢量(y_v, -x_v)是成直角的。除以其长度sqrt(x_v**2 + y_v**2),你有一个单位矢量与第一个垂直。项目PQ沿着这一矢量的距离d,你已经在从原线距离为d平行线得了2分。

有两条这样的平行线。给定线上的点和线外的点,法线向量与这两条线之间的向量的点积的符号告诉您是否已找到平行线与另一边的同一侧,或者在另一边。

你只需要弄清楚它们相交的地方。但通过设置2个变量中的2个方程并解决这个问题,可以确定线P1 + t*v1P2 + s*v2相交的位置。您可以执行哪项计算。

现在你有足够的信息来计算道路,其边缘内的你图中每一个路口边,和。这可以让你找出你需要的任何东西。

0

稍微不同的方式带着几分三角的:

定义矢量

b = B - A 
c = C - A 
uB = Normalized(b) 
uC = Normalized(c) 
angle 
Alpha = atan2(CrossProduct(b, c), DotProduct(b,c)) 
HalfA = Alpha/2 
HalfW = Width/2 
uB_Perp = (-uB.Y, ub.X) //unit vector, perpendicular to b 

//now calculate points: 
P1 = A + HalfW * (uB * ctg(HalfA) + uB_Perp) //outer blue triangle vertice 
P2 = A + HalfW * (uB * ctg(HalfA) - uB_Perp) //inner blue triangle vertice, lies on bisector 

(我没有考虑过大宽度的额外情况)

相关问题