Illustrator 内部精度?

平面设计 adobe-illustrator 单位
2022-01-20 11:28:31

Adobe Illustrator 使用的内部精度是多少?或者换一种说法,Illustrator 使用什么内部表示来存储坐标数据?

试试这个(我正在使用 CS6):

  • 在 Illustrator 允许的范围内放大(在 CS6 中为 6400%)。
  • 画一个圆圈。
  • 将圆调整为 0.001 × 0.001 pt。
  • 将圆调整为 10 × 10 pt。

这是我这样做时得到的:

圆形变成方形

这显然是一个极端的例子,但是当对象经过大量编辑时,我在更真实的场景中也经历过类似的扭曲。为了避免这种情况,在某些情况下,我不得不求助于放大的工作,并且只在最后将我的作品调整到最终尺寸。

显然,Illustrator 的内部精度并不是无限的。看起来坐标最终会在某个小范围内四舍五入为整数(我假设是一个点的一部分),这样四舍五入的误差就会累积,最终导致可见的失真。

任何人都可以对此有所了解吗?

1个回答

没有任何计算机应用程序具有无限的精度。甚至 CAD 应用程序也没有更大的精度范围。但是,它们确实允许您更改工作单位,这会更改您的零点位置,而 illustrator 总是以点为单位计算所有内容。您可能应该想阅读每个计算机科学家需要了解的关于浮点数的知识,现在它适用于每个计算机用户。

按比例绘制并没有错,这本质上就是 CAD 应用程序所做的,它们只有一个工具可以告诉用户这个事实。请参阅应用程序内部仅存储数字,这些数字的解释取决于前端。

无论如何,我无法复制您的问题:

在此处输入图像描述

图 1:一个 0.001 pt 的圆,按 x10 逐步缩放(图像形式 CC2017,但 cs 5 的结果相当)

但是我可以在CS6上复制问题

在找到一个 cs6 版本后,我可以验证这确实发生了。

我什至可以往返一个完整的双浮点值,例如:

in  0100000001110111011010111110101110000101000111101011100001010010 
out 0100000001110111011010111110110000000000000000000000000000000000

所以看起来系统的内部值肯定不是双浮点数。也许是单浮动?这对于硬件加速代码的早期版本是有意义的!

我必须测试CC2017是否是这种情况。