Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math SVG覆盖条建模软件_Math_Svg_Geometry - Fatal编程技术网

Math SVG覆盖条建模软件

Math SVG覆盖条建模软件,math,svg,geometry,Math,Svg,Geometry,我正在为一个需要重写2D建模软件的客户进行重构。有一个糟糕的旧逻辑来缩小不适合画布的东西。我想知道是否有人能提供一个合适的数学公式来缩小基于画布大小的向量,最重要的是缩小时应保持行与行之间的比率 不需要一个公式,我可以使用任何编程语言接受任何建议。 示例图像: 如果有人制作了一个2000毫米宽的覆盖条,那么绘制的线条应该缩小以适合画布。在这种情况下,像素和毫米成比例 我曾经尝试过这样使用指数降尺度,但这并不包括画布的大小 20mm^0.85=12.76mm 10mm^0.85=7.07mm

我正在为一个需要重写2D建模软件的客户进行重构。有一个糟糕的旧逻辑来缩小不适合画布的东西。我想知道是否有人能提供一个合适的数学公式来缩小基于画布大小的向量,最重要的是缩小时应保持行与行之间的比率

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

示例图像:

如果有人制作了一个2000毫米宽的覆盖条,那么绘制的线条应该缩小以适合画布。在这种情况下,像素和毫米成比例

我曾经尝试过这样使用指数降尺度,但这并不包括画布的大小

  • 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
    scy
    都小于1,则什么也不做(对象适合)。在任何其他情况下,最大值
    max(scx,scy)
    是您的比例因子。您必须将
    object.width
    object.height
    除以该比例因子。 *如果始终希望将对象适配到画布,则最大值
    max(scx,scy)
    是您的比例因子。您必须将
    object.width
    object.height
    除以该比例因子

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

这正是我所需要的,并且也有清楚的解释。干杯