2013-03-27 36 views
1

我正在試驗基於矢量的圖形樣式,並將對象表示爲具有給定寬度的一系列線段(可能會更容易將它們視爲矩形)。問題是這些部分連接在中心並留下一個空隙(如下所示)。我已經確定,最有效的方法來彌補這個差距,只是用三角形來覆蓋它,而且由於我在OpenGL中工作,我需要的是兩個點不與另一個矩形重疊的點,第三點是兩條線段(矩形)連接的中心點。如果我有兩個矩形的所有點,我怎樣才能確定我需要爲三角形使用哪些點?在中心連接的矩形之間的間隙

Example

編輯:我也會接受的替代解決方案,只要他們掩蓋了這個空白。

編輯2:沒關係,我解決了它。一旦我有更好的互聯網連接,我會發布代碼。

+0

我認爲這是你在找什麼: http://stackoverflow.com/questions/687173/how-do -i-render-thick-2d-lines-as-polygons – 2013-03-28 01:50:19

+0

這基本上是同樣的問題,在發佈之前我沒有看到,但對我而言,這些答案有點太理論了。 – 2013-03-28 23:59:51

回答

0

我找到了解決辦法假定有3個基本情況:

首先,三個獨特的中心點兩個矩形向上行進(正y方向),因此間隙位於連接的左側或右側。在我的代碼中,我將矩形的角點按其方向排列在中心點的左側或右側,因此如果底部矩形的左側點位於頂部矩形的左側點之下,則間隙位於左側點兩個長方形,否則間隙是在正確的點之間。其次,三個獨特的中心點在中心點的大部分中心處都有最大值,所以差距位於最高點。然後在具有最大y值的兩點之間存在差距。第三,三個獨特的中心點在中心點的大部分中心處具有最小值,因此間隙位於底部。然後在具有最小y值的兩點之間存在差距。

[如果請求它,我會後的情況爲例圖片]

0

也許我誤解了這個問題......但如果你放大紅色五角形的頂角,你會得到這樣的東西,對嗎?

junction between two polygon edges

其中A和B在矩形對EDGE1和C和d是在所述矩形爲EDGE2節點的節點。你說你已經知道這些座標。從你所說的,邊緣在A和B之間的中間相交,也在C和D之間的中間。所以稱這個點爲X,並且你可以很容易地計算出它的座標。

所以你需要做的就是繪製缺失的三角形AXC,對吧?因此,一種方法是確定A和C位於多邊形的「外部」(因此需要填充),而B和D位於「內部」,因此不這樣做。但是畫出兩者可能更容易,因爲它不會受傷。所以,如果你填寫AXC和BXD,你會得到這樣的:

enter image description here

+0

我試過了,但是我遇到了一些問題,在我之前的代碼中存在一些模棱兩可的問題,所以我不能完全區分A和B或C和D,所以我希望找到一個更一般的解決方案。 – 2013-03-29 00:08:44

+0

要指定,A不一定與C配對,B不一定與D配對,但當繪製所有四個可能的三角形時,它看起來很奇怪。 – 2013-03-29 00:13:56