SVG盖条建模软件

SVG cover strip modeling software

我正在为一个需要重写 2D 建模软件的客户进行重构。缩小不适合 canvas 的东西的旧逻辑很差。我想知道谁能提供一个合适的数学公式来根据 canvas 大小缩小矢量,最重要的是在缩小时应保持线与线之间的比例。

不需要一个公式我可以采纳任何使用任何编程语言的建议。

示例图片:

如果有人为 2000 毫米宽的覆盖条建模,绘制的线应缩小以适合 canvas。在这种情况下,像素和毫米是成正比的。

我试过像这样使用指数缩小,但这无论如何都不算​​ canvas 大小。

我知道这更像是一个数学问题,但它更像是一个编程问题。

感谢您的宝贵时间。

由于您没有指定任何语言,我将概述该过程。很容易实现,比如在javascript中。让 canvas.widthcanvas.height 为 canvas 的宽度和高度,让 object.widthobject.height 为对象的宽度和高度。

  • 首先计算 scx = object.width / canvas.widthscy = object.height / canvas.height
  • 如果你只想缩小(从不放大),那么:如果 scxscy 都小于 1,那么什么也不做(对象适合)。在任何其他情况下,最大值 max(scx, scy) 就是您的比例因子。您必须将 object.widthobject.height 除以该比例因子。 *如果您总是希望对象适合 canvas,那么最大值 max(scx, scy) 就是您的比例因子。您必须将 object.widthobject.height 除以该比例因子。

还有一个建议:您可以使用较低的 canvas.widthcanvas.height 轻松设置边距(实际上是填充)。假设您使用了 90% 的实际尺寸。然后,您可以将原点设置在宽度和高度的 5% 处,并且您知道任何对象都不会接近任何 canvas 限制的 5%。