2017-02-02 38 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 

(我沒有考慮過大寬度的額外情況)

相關問題