javascript - 在 Javascript 中偏移多边形

标签 javascript svg geometry script#

EDIT5:终于用 Javascript 实现了 Angus Johnson 的 Clipper 库,并选择了 Sourceforge 作为主机。

现场演示:http://jsclipper.sourceforge.net/6.1.1.1/main_demo.html

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

带有分步教程的维基页面: https://sourceforge.net/p/jsclipper/wiki/Home%206/

包含数十个示例多边形的演示程序演示: https://sourceforge.net/p/jsclipper/wiki/Main_Demo%206/

我希望这对任何需要具有偏移功能的折线和多边形裁剪库的人有所帮助。


EDIT4:一种可能性是使用将 pascal 转换为 javascript http://p2js.gelicon.biz/en/ .还没有成功。 p2js.exe clipper.pas 给出 fatal error “无法找到 clipper 使用的单位系统”。


编辑:我找到了 script# ( Github ),它似乎能够将 C# 转换为 Javascript。 C# 中提供了 Clipper 库,那么是否可以使用 Script# 进行 C#->JS 转换以及如何进行转换?

EDIT3:没有用 script# 转换,但也有 Emscripten,但是 4000 cpp 行转换为 300 000 Javascript 行,所以不是一个选项。手动转换似乎是王道。


EDIT2:我做了 an example , 这显示了问题。使用向左和向右箭头应用偏移。在一定距离内它工作正常,但随后出现问题。黄色描边多边形被称为原始偏移多边形,AFAIK Clipper lib 提供了一种方法来删除原始偏移多边形不需要的部分。


Angus Johnson 有一个用于偏移多边形的 Clipper 库。

我需要 Javascript 中的此功能来偏移 SVG 多边形。

有人为它制作了一个 Javascript 端口吗?

如果没有,我会很感激一些指导方针,例如。以下内容:
- 这将是一项多么艰巨的任务?
- 选择哪一个作为源代码(Delphi、C#、C++)?
- lib 中的所有内容都需要抵消吗?

Clipper 库生成以下结果,这些结果正是所需的功能:

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

部分链接:
- Files in Sourceforge
- Clipper Documentation
- One Stackoverflow answer
- Offsetting algorithm

最佳答案

我已经成功地将 clipper 移植到 JS,并且经过一段时间的全面测试后将发布它。似乎所有功能都可以移植。

一个警告,128 位支持减少到 106 位。

优点之一是可以使用大量浏览器,并且可以使用 svg、vml、html5 canvas 作为图形界面。

任何想法,哪个主机最容易发布,并有演示的可能性?


编辑:

终于用 Javascript 实现了 Angus Johnson 的 Clipper 库,并选择了 Sourceforge 作为宿主。

现场演示: http://jsclipper.sourceforge.net/6.1.1.1/main_demo.html

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

带有分步教程的维基页面: https://sourceforge.net/p/jsclipper/wiki/Home%206/

包含数十个示例多边形的演示程序演示: https://sourceforge.net/p/jsclipper/wiki/Main_Demo%206/

我希望这对任何需要具有偏移功能的折线和多边形裁剪库的人有所帮助。

关于javascript - 在 Javascript 中偏移多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13248896/

相关文章:

javascript - 在 Javascript/Jquery 中按住一个按键(Shift 键)

javascript - 如果对象包含带有空数组的键,如何删除该对象?

javascript - 将 SVG 多边形路径转换为纬度和经度坐标

html - bootstrap 4 内的 SVG 行,flex div 不可见

google-chrome - SVG 图像在 Chrome 上显示黑色笔划

c++ - 查找正多边形的顶点

javascript - 通过标签输入下拉搜索

javascript - 使用 Jquery 隐藏其他 ul 和 li 后显示某些 li

合成一组二维点的算法

python - 使用纽厄尔方法在 Python 中计算表面法线