イラストレーターの内部精度は?


7

Adobe Illustratorで使用される内部精度はどのくらいですか?言い換えると、Illustratorが座標データを格納するために使用する内部表現は何ですか?

これを試してください(私はCS6を使用しています):

  • Illustratorが可能な限りズームインします(CS6では6400%)。
  • 円を描く。
  • 円のサイズを0.001×0.001 ptに変更します。
  • 円のサイズを10×10 ptに変更します。

これを実行すると、次のようになります。

円は正方形になります

これは明らかに極端な例ですが、オブジェクトが大幅に編集されたときに、より現実的なシナリオで同様の歪みが発生しました。これを回避するために、場合によっては、拡大して作業し、最後にアートワークのサイズを最終的なサイズに変更することしかしませんでした。

明らかに、Illustratorの内部精度は無限ではありません。座標は最終的に小さなスケールで整数に丸められているようです(ポイントの一部を想定しています)。丸め誤差が蓄積し、最終的には目に見える歪みが発生します。

誰でもこれに光を当てることができますか?


@joojaa Illustratorのどのバージョンを使用していますか?多分彼らはこのポストCS6を改善しましたか?
SWB

@joojaaこれはCS5に表示されませんか?面白いです。これは、Illustrator CS6(16.0.0 x64)のコピーで確実に一貫して再現可能です。確かに、CS6のリグレッションではありません...
SWB

ちなみに、スクリプトで精度を測定することができます。しかし、ツアーのコメントの方法がこの質問の範囲を限定していることを恐れて、このサイトではトピックから外れています。
joojaa 16

はい

私はこれをCS5で試しましたが、さらに奇妙な形になりました!
Ryan

回答:


1

無限の精度を持つコンピュータアプリケーションはありません。CADアプリケーションでさえ、それほど大きな精度スケールはありません。ただし、作業単位を変更してゼロ点の位置を変更することはできますが、イラストレーターは常にすべてをポイント単位で計算します。おそらく、すべてのコンピュータサイエンティストが浮動小数点数について知っておくべきことを読んだ方がいいでしょう。

大縮尺での描画に問題はありません。これは、基本的にCADアプリケーションが行うことであり、ユーザーにこの事実を伝える機能しかありません。アプリケーションが内部的に保存する番号のみを解釈することを確認してください。これらの番号の解釈はフロントエンド次第です。

とにかく私はあなたの問題を再現することはできません:

ここに画像の説明を入力してください

画像1:x1で段階的にスケーリングされた0.001 ptの円(画像形式はCC2017ですが、CS 5になります)

ただし、CS6で問題を再現できます

cs6バージョンを追跡した後、これが実際に発生することを確認できます。

たとえば、完全な倍精度浮動小数点値を往復することもできます。

in  0100000001110111011010111110101110000101000111101011100001010010 
out 0100000001110111011010111110110000000000000000000000000000000000

したがって、システムの内部価値は確かにダブルフロートではないようです。おそらくシングルフロート?これは、ハードウェアアクセラレーションコードの初期バージョンには意味があります。

CC2017がそうであるかどうかをテストする必要があります。


という事は承知しています。(私は実際には開発者でありエンジニアです。)明らかに、Illustrator(または任意のソフトウェア)の内部精度は「無限」ではありません。Illustratorの実際の制限を確認しようとしています。私の例では、単精度の浮動小数点でも円を簡単に保持できるため、Illustratorでは浮動小数点が使用されていないように見えます。むしろ、あるレベルで整数に切り捨てられているように見えます。
SWB

@SWB基本的にポストスクリプトエンジンであるため、おそらく固定小数点演算を使用しています。以前にこれについて推測しましたが、それらは浮動小数点に移行していると思います。混合状態にある可能性があります。実際の問題は、アドビが変換マトリックスをどのように操作するかを選択することですが、これはまったく意味がありません。本質的に、異なる変換を伴う2つのオブジェクトを操作する場合、すべての行列がIDにリセットされます。これは、精度に対する初歩的な期待さえも爆破するでしょう。
joojaa 16

RE:固定小数点演算。それも私の推測です。私は、実際に知っている誰かがチャイムを鳴らして、確実に私たちに知らせてくれることを望んでいます。私はグーグルを試しました、そして空になりました。
SWB、

テストはどのように行いましたか?それは確かにシングルへの変換とダブルへの変換のように見えます。(C#で同じ変換を行ってもほぼ同じ結果が得られますが、C#が下位32ビットを切り捨てるだけで違いますが、例では丸められます)。知覚可能な劣化なしに円の制御点を10-> 0.001-> 10往復します。これはCS6でしか表示されないことに興味があります。私はそれがIllustratorにとってより基本的なものだと思いましたが、それはバグかもしれません。
SWB

1
2003年にIllustrator開発者のTeri Pettitが作成したこの投稿(バージョン10/11のタイムフレーム)を見つけました:groups.google.com/d/msg/adobe.illustrator.macintosh/KSqIpfpQHdU/…。彼女は、Illustratorは保存時に値を0.0001 ptに丸めるが、ファイルが開いている間は単精度浮動小数点を使用すると述べています。これは、バージョン9で発生したEPSベースのネイティブ形式からPDFベースのネイティブ形式への変更後です。そのため、今日でもこのことが当てはまる可能性があります。ただし、それが単なるバグでない限り、CS6で観察された動作はまだ説明されていません。
SWB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.