SVG盖板条建模软件

问题描述

我正在为客户的重构过程,在该过程中需要重写其2D建模软件。有一种较差的旧逻辑来缩小画布中不适合的内容。我想知道是否有人可以提供适当的数学公式来根据画布大小缩小矢量,最重要的是缩小时应保持行与行之间的比例。

不需要一个公式,我可以使用任何编程语言来提出建议。

示例图片

enter image description here

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

我已经尝试过使用像这样的指数缩减,但这并没有以任何方式计算画布大小。

  • @bot.command() async def sus(ctx): dre = ["Cyan faked trash!","Red was following me!","White vented right in front of me!","Pink is so sus","brown sabotaged the reactor!","**ELECTRICAL**","Purple is the- oh,he's dead.",] await ctx.send(f'{random.choices(dre,weights=(500,500,100,500))}')
  • 20mm^0.85=12.76mm
  • 10mm^0.85=7.07mm

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

谢谢您的时间。

解决方法

由于您未指定任何语言,因此我将概述该过程。例如,在javascript中实现起来非常容易。设置canvas.widthcanvas.height的宽度和高度,以及object.widthobject.height的宽度和高度。

  • 首先计算scx = object.width / canvas.widthscy = object.height / canvas.height
  • 如果只想缩小(从不缩放),则:如果scxscy都小于1,则不执行任何操作(对象适合)。在任何其他情况下,最大值max(scx,scy)是您的比例因子。您必须将object.widthobject.height除以该比例因子。 *如果您始终希望使对象适合画布,则最大值max(scx,scy)是您的比例因子。您必须将object.widthobject.height除以该比例因子。

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