SVG盖条建模软件
SVG cover strip modeling software
我正在为一个需要重写 2D 建模软件的客户进行重构。缩小不适合 canvas 的东西的旧逻辑很差。我想知道谁能提供一个合适的数学公式来根据 canvas 大小缩小矢量,最重要的是在缩小时应保持线与线之间的比例。
不需要一个公式我可以采纳任何使用任何编程语言的建议。
示例图片:
如果有人为 2000 毫米宽的覆盖条建模,绘制的线应缩小以适合 canvas。在这种情况下,像素和毫米是成正比的。
我试过像这样使用指数缩小,但这无论如何都不算 canvas 大小。
20mm^0.85=12.76mm
10mm^0.85=7.07mm
5mm^0.85=3.92mm
我知道这更像是一个数学问题,但它更像是一个编程问题。
感谢您的宝贵时间。
由于您没有指定任何语言,我将概述该过程。很容易实现,比如在javascript
中。让 canvas.width
和 canvas.height
为 canvas 的宽度和高度,让 object.width
和 object.height
为对象的宽度和高度。
- 首先计算
scx = object.width / canvas.width
和 scy = object.height / canvas.height
。
- 如果你只想缩小(从不放大),那么:如果
scx
和 scy
都小于 1,那么什么也不做(对象适合)。在任何其他情况下,最大值 max(scx, scy)
就是您的比例因子。您必须将 object.width
和 object.height
除以该比例因子。
*如果您总是希望对象适合 canvas,那么最大值 max(scx, scy)
就是您的比例因子。您必须将 object.width
和 object.height
除以该比例因子。
还有一个建议:您可以使用较低的 canvas.width
和 canvas.height
轻松设置边距(实际上是填充)。假设您使用了 90% 的实际尺寸。然后,您可以将原点设置在宽度和高度的 5% 处,并且您知道任何对象都不会接近任何 canvas 限制的 5%。
我正在为一个需要重写 2D 建模软件的客户进行重构。缩小不适合 canvas 的东西的旧逻辑很差。我想知道谁能提供一个合适的数学公式来根据 canvas 大小缩小矢量,最重要的是在缩小时应保持线与线之间的比例。
不需要一个公式我可以采纳任何使用任何编程语言的建议。
示例图片:
如果有人为 2000 毫米宽的覆盖条建模,绘制的线应缩小以适合 canvas。在这种情况下,像素和毫米是成正比的。
我试过像这样使用指数缩小,但这无论如何都不算 canvas 大小。
20mm^0.85=12.76mm
10mm^0.85=7.07mm
5mm^0.85=3.92mm
我知道这更像是一个数学问题,但它更像是一个编程问题。
感谢您的宝贵时间。
由于您没有指定任何语言,我将概述该过程。很容易实现,比如在javascript
中。让 canvas.width
和 canvas.height
为 canvas 的宽度和高度,让 object.width
和 object.height
为对象的宽度和高度。
- 首先计算
scx = object.width / canvas.width
和scy = object.height / canvas.height
。 - 如果你只想缩小(从不放大),那么:如果
scx
和scy
都小于 1,那么什么也不做(对象适合)。在任何其他情况下,最大值max(scx, scy)
就是您的比例因子。您必须将object.width
和object.height
除以该比例因子。 *如果您总是希望对象适合 canvas,那么最大值max(scx, scy)
就是您的比例因子。您必须将object.width
和object.height
除以该比例因子。
还有一个建议:您可以使用较低的 canvas.width
和 canvas.height
轻松设置边距(实际上是填充)。假设您使用了 90% 的实际尺寸。然后,您可以将原点设置在宽度和高度的 5% 处,并且您知道任何对象都不会接近任何 canvas 限制的 5%。