2012-11-06 13 views
12

EDIT5: W końcu biblioteka Clipper Angus Johnson została zaimplementowana w Javascript i wybrana jako Sourceforge dla hosta.Przesuwanie wielokątów w JavaScript

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

źródło pobierania: https://sourceforge.net/projects/jsclipper/

Wikipage z krok po kroku Poradnik: https://sourceforge.net/p/jsclipper/wiki/Home%206/

Prezentacja Demo programu, w tym kilkudziesięciu przykładowych wielokątów: https://sourceforge.net/p/jsclipper/wiki/Main_Demo%206/

Mam nadzieję, że to pomoże każdemu, kto potrzebuje polilinii i pol biblioteka przycinania ygon z funkcjami kompensacji.


EDIT4: Jedną z możliwości jest przekształcenie Pascal javascript używając http://p2js.gelicon.biz/en/. Jeszcze się nie udało. p2js.exe clipper.pas podaje Błąd krytyczny "Nie można znaleźć systemu jednostki używanego przez maszynkę".


EDIT: Znalazłem script# (Github), który wydaje się być w stanie konwertować C# JavaScript. Clipper lib jest dostępny w języku C#, więc czy możliwe byłoby wykonanie konwersji C# -> JS przy użyciu Script # i jak?

EDIT3: Nie został przekonwertowany za pomocą skryptu #, ale istnieje również Emscripten, ale linie 4000 cpp zostały przekonwertowane na 300 000 linii Javascript, więc nie jest to opcja. Ręczna konwersja wydaje się być królem.


EDIT2: Zrobiłem an example, który pokazuje problem. Użyj strzałki w lewo i w prawo, aby zastosować przesunięcie. W pewnej odległości działa dobrze, ale potem coś idzie nie tak. Żółty obrysowany wielokąt to tzw. Surowy offsetowy wielokąt, a AFAIK Clipper lib zapewnia sposób na pozbycie się niepotrzebnych części surowego wieloboku offsetowego.


Istnieje biblioteka Clipper firmy Angus Johnson do znoszenia wielokątów.

Potrzebuję tej funkcji w JavaScript do kompensacji wielokątów SVG.

Czy ktoś zrobił port z Javascriptem?

Jeśli nie, chciałbym docenić niektóre wytyczne, np. co następuje:
- jak ogromne byłoby to zadanie?
- który z nich wybrać dla źródła (Delphi, C#, C++)?
- czy wszystko w bibliotece jest potrzebne do kompensacji?

Biblioteka Clipper daje następujące wyniki, które są po prostu pożądaną funkcjonalność:

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

Niektóre linki:
- Files in Sourceforge
- Clipper Documentation
- One Stackoverflow answer
- Offsetting algorithm

+0

Nie rozwiązałeś już tego? http://stackoverflow.com/questions/12723832/how-can-i-implement-offset-path-effect-in-svg-without-using-javascript-or-dilate/12723835#12723835 –

+0

Sortowanie, ale ja " docenią prostą nową geometrię (wielokąt) zamiast złożonych struktur masek lub sąsiednich zduplikowanych obiektów, które mogą nie działać na każdej platformie. –

Odpowiedz

4

Udało mi się przenieść clippera do JS, a po chwili po dokładnych testach zamierzam go zwolnić. Wygląda na to, że cała funkcjonalność mogła zostać przeniesiona.

Jedno zastrzeżenie, wsparcie 128-bitowe jest zmniejszone do 106-bitów.

Jedną z zalet jest uzyskanie dużej przestrzeni w przeglądarkach i możliwość korzystania z płótna svg, vml, html5 jako interfejsu graficznego.

Wszelkie pomysły, który host będzie najłatwiejszy do opublikowania, z możliwością demo?


EDIT:

wreszcie Clipper biblioteka Angusa Johnsona realizowane w JavaScript i wybrany Sourceforge dla gospodarza.

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

Pobrań: https://sourceforge.net/projects/jsclipper/

Wikipage z poradnika krok po kroku: https://sourceforge.net/p/jsclipper/wiki/Home%206/

Prezentacja Demo programu w tym kilkudziesięciu przykładowych wielokątów: https://sourceforge.net/p/jsclipper/wiki/Main_Demo%206/

Mam nadzieję, że to pomoże każdemu, kto nie eds polilinia i biblioteka przycinania wielokątów z funkcjami kompensacji.

2

Tam nie ma prostych rozwiązań, jeśli chodzi o pompowanie wielokątów. Jeśli masz wklęsły wielokąt, prędzej czy później rozwinie się on na kilka mniejszych wielokątów, jeśli zmniejszysz wystarczająco przesunięcie. Sugerowałbym więc użycie istniejącego, sprawdzonego algorytmu (Clipper powinien być dobry).

Na twoje pytanie dotyczące przeniesienia C# do JS, powiedziałbym, że jest to z pewnością możliwe, ale pytanie brzmi, ile czasu zajmie i czy narzędzia do automatycznego portowania będą przydatne. Sądząc this discussion, wątpię:

Wzięłam szybki ukłucie przy użyciu ScriptSharp przetłumaczyć kod C# do JavaScript, ale istnieje zbyt wiele niekompatybilnych struktury korzystania że i nie mogłem dostać się do wypisać plik javascript. Próba implementacji algorytmu obcinania Vatti w JavaScript wydaje się być następnym krokiem.

...

I tak, to nie pomoże, za pomocą różnego rodzaju przemiany automatyki tools.The strzyżenia ma struktur danych, takich jak Int64 lub Int128 które nie istnieje w JS lub AS .I tylko usunięto je całkowicie. Int32 powinno być wystarczające dla większości przypadków, chyba że pracujesz na czymś związanym z geografią lub ogromnymi mapami.

Port ActionScript, jeden z wymienionych użytkowników, niestety nie jest już dostępny.

+1

To jest co najmniej dostępne: https://github.com/ChrisDenham/PolygonClipper.AS3. Masz rację, że automatyczna konwersja nie jest opcją. Wykorzystanie linii Emscripten 4000 cpp przekonwertowanych na 300 000 linii JS. Nie testowałem nawet jeśli działa ... –