得到2個矩形
回答
如果我理解正確的話,那麼你應該遵循這些步驟:雙方共享
- 查找角落。
- 從內部和外部矩形獲取oposit角。
vector = outerRecCorner - innerRecCorner
,這聽起來像我需要的,但它並沒有考慮位移限於水平或垂直平面( 3個共享邊),也沒有非位移(4個共享邊) – mtijn
與3個共享邊它會給你矢量正交於其中一邊。 4邊結果將是[0,0],所以這將是正確的答案。 –
是的,在第1步中,只需找到兩個矩形共用的_any_角。其餘的步驟將會起作用。 –
它更像是一個數學不是編程問題:)
讓我們假設你有兩個長方形:A(內部)和B(外)。他們有4個角:
Point [] GetCorners (Rectangle rect)
{
Point [] corners = new Point[4];
Point corners[0] = new Point(rect.X, rect.Y);
Point corners[1] = new Point(rect.X + rect.Width, rect.Y);
Point corners[2] = new Point(rect.X, rect.Y + rect.Height);
Point corners[3] = new Point(rect.X + rect.Width + rect.Width, rect.Y);
return corners;
}
首先找到第一個共享的角落:
Point [] cornersListA = GetCorners(A);
Point [] cornersListB = GetCorners(B);
int sharedCornerIndex = 0;
for (int i=0; i<4; i++)
{
if(cornersListA[i].X==cornersListB[i].X && cornersListA[i].Y==cornersListB[i].Y)
{
sharedCornerIndex = i;
break;
}
}
然後找出它的角oposite:
int oppositeCornerIndex = 0;
if(sharedCornerIndex ==0) oppositeCornerIndex = 3;
if(sharedCornerIndex ==3) oppositeCornerIndex = 0;
if(sharedCornerIndex ==1) oppositeCornerIndex = 2;
if(sharedCornerIndex ==2) oppositeCornerIndex = 1;
最後,得到矢量(我沒有檢查這部分代碼,但它應該工作):
Vector v = new Vector();
v.X = cornersListB[oppositeCornerIndex].X - cornersListA[oppositeCornerIndex].X;
v.Y = cornersListB[oppositeCornerIndex].Y - cornersListA[oppositeCornerIndex].Y;
+1謝謝你這樣詳細的答案!我已經重申了包括'數學'的問題,我一定會使用這個(但是使用linq重構它),再次感謝! – mtijn
- 1. 得到一個矩形
- 2. (發現在2個點/矩形控制
- 3. wxPython textctrl暫時得到黑色矩形
- 4. Graphics.DrawString到多個矩形
- 5. 動畫2矩形一起
- 6. 超過2百萬矩形
- 7. 計算座標2矩形
- 8. 獲得一個矩陣的形式在R中的一個矩陣的形式
- 9. 以矩陣形式獲得矩陣行
- 10. 快速矩形到矩形相交
- 11. 有沒有機會將矩形合併到一個矩形?
- 12. 將矩形位置綁定到另一個矩形
- 13. 另一個矩形內的矩形
- 14. 糾正一個矩形以得到區域
- 15. 過濾矩形以2:從矩形的陣列1高寬比
- 16. love2D錯誤:'矩形'的錯誤參數#2(數字預期,得到零)
- 17. 添加矩形以獲得所有矩形邊界的方法
- 18. 將一個矩形映射到另一個矩形,包括旋轉
- 19. 如何正確縮放一個矩形imageview到一個矩形imageview?
- 20. 我想做一個矩形,需要一個用戶inut得到一個大小
- 21. OpenGL ES 2.紋理貼圖到四邊形(不是正方形或矩形)?
- 22. CompareTo - 兩個矩形
- 23. 將多個矩形繪製到JPanel
- 24. 如何找到這個矩形
- 25. 將DataContext綁定到一個矩形
- 26. 綁定矩形填充到一個值
- 27. 創建一個Mouselistner到Javafx矩形
- 28. MATLAB得到矩陣
- 29. 繪製一個矩形圖和2個CSS
- 30. 從2個特定點創建一個矩形
你使用WPF? –
是的,但我計算這個功能不能訪問畫布,我真的只需要偏移/矢量 – mtijn