2012-11-06 47 views
12

EDIT5:最後得到了Angus Johnson的Clipper庫,它使用Javascript實現,並選擇了Sourceforge作爲主機。Javascript中的多邊形偏移

LIVE DEMO:http://jsclipper.sourceforge.net/6.1.1.1/main_demo.html

下載源: https://sourceforge.net/projects/jsclipper/

WIKIPAGE與步驟一步教程: https://sourceforge.net/p/jsclipper/wiki/Home%206/

演示程序的演示文稿包括數十樣品多邊形: https://sourceforge.net/p/jsclipper/wiki/Main_Demo%206/

我希望這可以幫助任何需要折線和pol帶有抵消功能的ygon剪輯庫。


EDIT4:一個可能就是使用 http://p2js.gelicon.biz/en/帕斯卡轉換爲JavaScript。還沒有成功。 p2js.exe clipper.pas給出致命錯誤「無法找到削波器使用的單位系統」。


編輯:我發現script#Github),這似乎是能夠C#轉換爲JavaScript。 Clipper lib在C#中是可用的,那麼可以使用Script#進行C# - > JS轉換,以及如何實現?

編輯3:沒有轉換腳本#,但也有Emscripten,但4000 cpp行轉換爲300 000 Javascript行,所以沒有一個選項。手動轉換似乎是一個國王。


編輯2:我做了an example,這表明了問題。左右使用箭頭來應用偏移量。在一定的距離上它可以正常工作,但出現問題。黃色描邊多邊形是所謂的原始偏移多邊形,AFAIK Clipper lib提供了一種方法來處理移除原始偏移多邊形的不需要的部分。


安格斯約翰遜有一個Clipper庫來抵消多邊形。

我想在Javascript中使用此功能來抵消SVG多邊形。

有人發過Javascript的端口嗎?

如果不是,我會欣賞一些指導方針,例如。如下:
- 它會是多麼艱鉅的任務?
- 哪一個可以選擇源代碼(Delphi,C#,C++)?
- 在lib中是否需要用於抵消的所有內容?

克利皮爾文庫產生以下結果它們只是所期望的功能:

Offset Polygons, polygons, delta, jointype, miterlimit, jtSquare jtRound jtMiter

某些鏈接:
- Files in Sourceforge
- Clipper Documentation
- One Stackoverflow answer
- Offsetting algorithm

+0

你不是已經解決了嗎? http://stackoverflow.com/questions/12723832/how-can-i-implement-offset-path-effect-in-svg-without-using-javascript-or-dilate/12723835#12723835 –

+0

排序,但我' d欣賞簡單的新幾何(多邊形),而不是複雜的蒙版結構或相鄰的重複對象,這可能不適用於每個平臺。 –

回答

4

我已經成功地將裁剪器移植到JS,並經過一段時間後,徹底的測試將釋放它。似乎所有功能都可能已被移植。

一個告誡,128bit支持減少到106bit。

其中一個優點是可以擴展瀏覽器的空間,並且可以使用svg,vml,html5 canvas作爲圖形界面。

任何想法,哪個主機最容易發佈,演示可能性?


編輯:

終於拿到JavaScript實現,並選擇在Sourceforge主機安格斯約翰遜的快船庫。

LIVE DEMO: http://jsclipper.sourceforge.net/6.1.1.1/main_demo.html

下載: https://sourceforge.net/projects/jsclipper/

WIKIPAGE與步驟一步教程: https://sourceforge.net/p/jsclipper/wiki/Home%206/

演示程序的演示文稿包括數十樣品多邊形: https://sourceforge.net/p/jsclipper/wiki/Main_Demo%206/

我希望這可以幫助任何人編輯折線和多邊形剪輯庫與抵消功能。

2

有一個當談到多邊形充氣時,不要提到任何簡單的解決方案。如果你有一個凹多邊形,遲早它會分裂成幾個更小的多邊形,如果你減少足夠的偏移量。所以我建議使用現有的,經過驗證的算法(Clipper應該是一個好的算法)。

關於將C#移植到JS的問題,我會說這肯定是可行的,但問題是需要多少時間以及自動移植工具是否有用。從this discussion來看,我對此表示懷疑:

我參加了一個快速刺在使用ScriptSharp翻譯的C#代碼 的Javascript,但也有使用 太多的不兼容的結構,我無法得到它輸出一個JavaScript文件。試圖實現 JavaScript中的Vatti裁剪算法似乎是下一步。

...

是的,它不會使用各種自動化轉換的幫助你 tools.The理髮器具有類似的Int64或Int128數據結構,該結構 不存在的JS或AS。我只是完全刪除它們。對於大多數情況,Int32應該是 就足夠了,除非您的地理位置 或巨大地圖相關。

不幸的是,其中一個用戶提到的ActionScript端口不再可用。

+1

這至少可用:https://github.com/ChrisDenham/PolygonClipper.AS3。你是對的,自動轉換不是一種選擇。使用Emscripten 4000 cpp行轉換爲300 000 JS行。我甚至不測試它是否工作... –