矢量图形如何 "Real-Time" 显示为光栅图形?
How are Vector Graphics Shown "Real-Time" as Raster Graphics?
所以我的显示器使用的是光栅图形,因此充满了像素。
但是,我听说 Adobe Illustrator 使用矢量图形。
那么如何在基于像素的显示器上显示矢量图形 "real-time"?
从this one之类的文章来看,矢量图和光栅图完全不同?那么为什么他们可以互相展示 - 就像他们一样?
Adobe Illustrator 是 "vector program" 的事实仅意味着它旨在帮助用户使用矢量...就像 Audacity,例如,帮助用户使用声音,或者记事本让用户使用角色。
就操作系统 (OS) and/or 硬件在图形表示方式方面的期望而言,Adobe Illustrator 与任何其他程序没有区别。
举这三个例子:
我们可以使用“+”符号的概念来显示栅格和矢量之间的区别:
RASTER:一个 3 x 3 像素,black-and-white“+”符号的 RASTER:
0 1 0
1 1 1
0 1 0
VECTOR:与 Vector 相同的符号:
[draw a line from point ( 1/3 X, 1/2 Y ) to point ( 2/3 X, 1/2 Y )]
[draw a line from point ( 1/2 X, 1/3 Y ) to point ( 1/2 X, 2/3 Y )]
这些是抽象表示——它们仍然需要编码、存储和显示.
您可以从字面上看到栅格是如何编码、存储和显示的——作为一个离散的值矩阵……如果您愿意的话,可以是马赛克。
另一方面,向量被编码并存储为一组指令。 x 和 y co-ordinates 存储为可用总 canvas space 的分数(相对于绝对)...作为 canvas [=81] 的维度=] 尚不清楚...这就是为什么您可以无限扩展矢量而不损失分辨率的原因。
现在...如果要在实际的 "vector display" 监视器上显示矢量(非常罕见),那么理论上您可以直接将矢量指令直接发送到监视器。但是...如您所问:"What happens if you're displaying a vector on a conventional monitor (a mosaic of pixels)?"
而且......答案是,再一次:当任何其他抽象概念被任何程序说明时会发生同样的事情。
但是...矢量最终会出现在屏幕上,所以这里有一个最小的例子来说明这是如何发生的:
使用上面的 "plus symbol" 示例,想象一个分辨率只有 3 x 3 像素的非常糟糕的显示器。 OS 会对程序(大概是 Illustrator)说:"I need your raster output to be 3 x 3 pixels wide."
所以程序会这样做:
1) 从点 ( 1/3 X, 1/2 Y ) 到点 ( 2/3 X, 1/2 Y ) 画一条线...但是将这些点转换为 3 x 3 内的点像素矩阵...并通过填充第一个像素、最后一个像素和所有像素画线 in-between.
2)对第二条指令做同样的事情。
3) 将生成的 3 x 3 像素矩阵传递给 OS。
PS - 你问他们如何做到 "show each-other." 传统的监视器可以显示已转换为像素的矢量,但我不认为它曾经以相反的方式完成过。
所以我的显示器使用的是光栅图形,因此充满了像素。
但是,我听说 Adobe Illustrator 使用矢量图形。
那么如何在基于像素的显示器上显示矢量图形 "real-time"?
从this one之类的文章来看,矢量图和光栅图完全不同?那么为什么他们可以互相展示 - 就像他们一样?
Adobe Illustrator 是 "vector program" 的事实仅意味着它旨在帮助用户使用矢量...就像 Audacity,例如,帮助用户使用声音,或者记事本让用户使用角色。
就操作系统 (OS) and/or 硬件在图形表示方式方面的期望而言,Adobe Illustrator 与任何其他程序没有区别。
举这三个例子:
我们可以使用“+”符号的概念来显示栅格和矢量之间的区别:
RASTER:一个 3 x 3 像素,black-and-white“+”符号的 RASTER:
0 1 0
1 1 1
0 1 0
VECTOR:与 Vector 相同的符号:
[draw a line from point ( 1/3 X, 1/2 Y ) to point ( 2/3 X, 1/2 Y )]
[draw a line from point ( 1/2 X, 1/3 Y ) to point ( 1/2 X, 2/3 Y )]
这些是抽象表示——它们仍然需要编码、存储和显示.
您可以从字面上看到栅格是如何编码、存储和显示的——作为一个离散的值矩阵……如果您愿意的话,可以是马赛克。
另一方面,向量被编码并存储为一组指令。 x 和 y co-ordinates 存储为可用总 canvas space 的分数(相对于绝对)...作为 canvas [=81] 的维度=] 尚不清楚...这就是为什么您可以无限扩展矢量而不损失分辨率的原因。
现在...如果要在实际的 "vector display" 监视器上显示矢量(非常罕见),那么理论上您可以直接将矢量指令直接发送到监视器。但是...如您所问:"What happens if you're displaying a vector on a conventional monitor (a mosaic of pixels)?"
而且......答案是,再一次:当任何其他抽象概念被任何程序说明时会发生同样的事情。
但是...矢量最终会出现在屏幕上,所以这里有一个最小的例子来说明这是如何发生的:
使用上面的 "plus symbol" 示例,想象一个分辨率只有 3 x 3 像素的非常糟糕的显示器。 OS 会对程序(大概是 Illustrator)说:"I need your raster output to be 3 x 3 pixels wide."
所以程序会这样做:
1) 从点 ( 1/3 X, 1/2 Y ) 到点 ( 2/3 X, 1/2 Y ) 画一条线...但是将这些点转换为 3 x 3 内的点像素矩阵...并通过填充第一个像素、最后一个像素和所有像素画线 in-between.
2)对第二条指令做同样的事情。
3) 将生成的 3 x 3 像素矩阵传递给 OS。
PS - 你问他们如何做到 "show each-other." 传统的监视器可以显示已转换为像素的矢量,但我不认为它曾经以相反的方式完成过。