Math SVG覆盖条建模软件
我正在为一个需要重写2D建模软件的客户进行重构。有一个糟糕的旧逻辑来缩小不适合画布的东西。我想知道是否有人能提供一个合适的数学公式来缩小基于画布大小的向量,最重要的是缩小时应保持行与行之间的比率 不需要一个公式,我可以使用任何编程语言接受任何建议。 示例图像: 如果有人制作了一个2000毫米宽的覆盖条,那么绘制的线条应该缩小以适合画布。在这种情况下,像素和毫米成比例 我曾经尝试过这样使用指数降尺度,但这并不包括画布的大小Math SVG覆盖条建模软件,math,svg,geometry,Math,Svg,Geometry,我正在为一个需要重写2D建模软件的客户进行重构。有一个糟糕的旧逻辑来缩小不适合画布的东西。我想知道是否有人能提供一个合适的数学公式来缩小基于画布大小的向量,最重要的是缩小时应保持行与行之间的比率 不需要一个公式,我可以使用任何编程语言接受任何建议。 示例图像: 如果有人制作了一个2000毫米宽的覆盖条,那么绘制的线条应该缩小以适合画布。在这种情况下,像素和毫米成比例 我曾经尝试过这样使用指数降尺度,但这并不包括画布的大小 20mm^0.85=12.76mm 10mm^0.85=7.07mm
20mm^0.85=12.76mm
10mm^0.85=7.07mm
5mm^0.85=3.92mm
谢谢您的时间。由于您没有指定任何语言,我将概述此过程。例如,它很容易在
javascript
中实现。让canvas.width
和canvas.height
为画布的宽度和高度,让object.width
和object.height
为对象的宽度和高度
- 首先计算
和scx=object.width/canvas.width
scy=object.height/canvas.height
- 如果您只想缩小比例(而不是增大比例),那么:如果
和scx
都小于1,则什么也不做(对象适合)。在任何其他情况下,最大值scy
是您的比例因子。您必须将max(scx,scy)
和object.width
除以该比例因子。 *如果始终希望将对象适配到画布,则最大值object.height
是您的比例因子。您必须将max(scx,scy)
和object.width
除以该比例因子object.height
还有一个建议:您可以使用较低的
canvas.width
和canvas.height
轻松设置边距(实际上是填充)。假设您使用实际尺寸的90%。然后您可以将原点设置为宽度和高度的5%,并且您知道没有任何对象距离任何画布限制的距离将小于5%。这正是我所需要的,并且也有清楚的解释。干杯