我正在为一个必须在几周内开始的项目收集一些信息。该项目包含一个基于浏览器的绘图工具,用户可以在其中添加预定义的形状或自己形成形状。形状必须是可选择的、可自由缩放的并且可以使用类似 Illustrator 的转换工具(手柄)进行旋转。我们想到的预定义形状是:矩形、椭圆、半椭圆和(等腰)三角形。
到目前为止一切顺利,为了实现这一点,我在考虑 RaphaelJS 或 FabricJS,但是......每个形状(多边形/路径)都必须用一定的圆角半径绘制。并且在缩放时必须保持圆角半径,所以不会发生失真。用户可以通过输入指定舍入。
有一些障碍/问题:
- 是否有一些统一的数学公式可以将角半径应用于我提到的形状?还是必须将每个形状本身都视为一个小型项目?我想将它作为路径或多边形返回,因此可以使用 SVG 或画布绘制。
- 通过拖动变换手柄,每个缩放或旋转操作都会导致(大量)计算以检索我认为的更新形状。矩形是最容易实现的,除了椭圆之外,所有其他形状都更难计算。有什么方法可以加快这个过程吗?
我找到了一个网站,用户可以在其中绘制流程图并在提供的几乎所有形状上应用圆角半径。它工作得如此顺利,我无法确定他们是如何做到的。链接:https ://www.lucidchart.com/ (尝试按钮)
现在,我有点无能为力,我猜数学平庸。也许有人可以将我推向正确的方向并分享一些经验?
提前致谢。
顺便提一句。性能是这个项目的关键。绘图的输出必须是 SVG 格式。