簡體   English   中英

如何繪制形狀周圍的區域

[英]How to draw the area around a shape

我為 java 的游戲開發了一個非常簡單的 map 編輯器階段。目標是在 map 上放置一些不同形狀的島嶼。但是有一些限制:

  • 島嶼不得與另一個島嶼相距特定距離(我們稱其為 L)
  • 島嶼不得與另一個島嶼相距特定距離(我們稱之為 S)

在游戲中,島嶼是用鼠標放置的。 玩家可以看到可以放置或不放置島嶼的區域,如您所見。

允許和不允許的區域

我的問題是我意識到我的禁止區域不好。 例如,矩形島有一個矩形禁止區域(我的第一次幼稚嘗試)但實際上我必須在矩形周圍繪制 S 區域; 導致這樣的形狀:

具有實際禁止區域的矩形

只要我的形狀只是由線條組成,我就能畫出這些區域。 但是我的島可以有三次曲線或二次曲線(盡管以后我會需要這種區域用於其他形狀)。 我設法做的越接近是:

禁止圓圈區域

在這種情況下,圓周圍的不允許區域必須是......一個圓(簡單幾何)。 但正如您所見,我有一個奇怪的圓角矩形。

我目前嘗試轉換 Shape 的 pathiterator 的每個部分以獲得該區域。 它不像縮放形狀那么簡單(記住矩形的情況)。 我已經嘗試了很多方法來變換形狀並獲得面積。

問題:

有人有信息、公式、線索、算法、庫來從任何 java.awt.Shape(或 PathIterator)和距離獲得這個區域嗎?

http://www.java2s.com/example/java/java.lang/expand-or-shrink-a-shape-in-all-directions-by-a-defined-offset.html

這個站點描述了如何使用 stroke 來獲取偏移區域。

只需進行一次修改即可解決我的問題; 我必須使用BasicStroke.JOIN_ROUND來獲得良好的矩形形狀。

然后我得到:

在此處輸入圖像描述

在此處輸入圖像描述

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM