首页 > 其他分享 >Pdf文件格式解析:stream中的变换矩阵指令 1 0 0 -1 0 841.9 cm

Pdf文件格式解析:stream中的变换矩阵指令 1 0 0 -1 0 841.9 cm

时间:2024-04-05 16:04:33浏览次数:16  
标签:cm stream 变换 0.5 矩阵 文件格式 坐标 PDF 剪切

解释1 0 0 -1 0 841.9 cm

在PDF文件中的变换矩阵指令 1 0 0 -1 0 841.9 cm 中,前四个数值 1 0 0 -1 组成了一个2x2的线性变换部分,用于描述旋转和缩放操作,而不涉及平移。这里,1 0 0 -1 的每一个数字都有特定的意义:

  1. 第一个数字 1:这是矩阵的第一行第一列的元素。它决定了x坐标在变换后的缩放情况。在这里,它的值是1,意味着x坐标在变换后保持不变,没有进行缩放。

  2. 第二个数字 0:这是矩阵的第一行第二列的元素。它决定了y坐标对x坐标变换的影响。在这里,它的值是0,意味着y坐标的值不会影响x坐标的变换。

  3. 第三个数字 0:这是矩阵的第二行第一列的元素。它决定了x坐标对y坐标变换的影响。在这里,它的值也是0,意味着x坐标的值不会影响y坐标的变换。

  4. 第四个数字 -1:这是矩阵的第二行第二列的元素。它决定了y坐标在变换后的缩放情况。这里的值是-1,意味着y坐标在变换后会取其相反数,即实现了垂直翻转的效果。

综合这四个数字,1 0 0 -1 这个矩阵实现了一个垂直翻转(沿y轴)的变换,而不影响x坐标。这种变换常用于将坐标系统的原点从页面的左上角移动到左下角,这在处理PDF页面内容时是很常见的。

需要注意的是,这个2x2的线性变换部分只描述了旋转和缩放操作,平移操作(即沿x轴和y轴的移动)是由变换矩阵的最后两个数值(在这个例子中是 0 841.9)来描述的。这两个数值分别表示在x轴和y轴上的平移距离。

第2位非0如何计算坐标

在PDF变换矩阵 1 a 0 -1 中,如果第二位(即第一行第二列的元素)不是0,那么它将表示x坐标的值在变换时会影响到y坐标的值。这种变换通常表示一个剪切(shear)操作,它会导致图形在某一方向上发生扭曲。

具体来说,当应用这个变换矩阵到一个坐标点 (x, y) 时,新的y坐标值将是原始y坐标与原始x坐标乘以a的和。数学表达式如下:

新x = x * 1 + 0 * y = x
新y = a * x + (-1) * y

这意味着y坐标的新值将是原始x坐标乘以a的值减去原始y坐标的值。如果a的值是正数,那么图形将向右上方剪切;如果a的值是负数,那么图形将向右下方剪切。

剪切操作在图形设计中不常见,但在某些特殊效果或特定需求下可能会被使用。在PDF文档中,它可能用于创建非传统的页面布局或特殊视觉效果。

举个例子,如果a的值为0.5,变换矩阵就是 1 0.5 0 -1,那么一个点 (2, 3) 在应用这个变换后将会变成 (2, 2*0.5 - 3) = (2, -2)。这表示点在y方向上被剪切了,并且相对于原始位置向下移动了。

请注意,变换矩阵的后两个数值(在这个例子中未给出)将控制平移操作,它们分别代表在x轴和y轴上的平移距离。在上面的例子中,我们仅讨论了由 1 a 0 -1 四个数值定义的线性变换部分。

第三位非0如何计算坐标

在PDF变换矩阵 1 0 b -1 中,如果第三位(即第二行第一列的元素)不是0,那么它将表示y坐标的值在变换时会影响到x坐标的值。这种变换同样表示一个剪切(shear)操作,但它是在水平方向上发生的,而不是垂直方向。

具体来说,当应用这个变换矩阵到一个坐标点 (x, y) 时,新的x坐标值将是原始x坐标与原始y坐标乘以b的和。数学表达式如下:

新x = 1 * x + b * y
新y = 0 * x + (-1) * y = -y

这意味着x坐标的新值将是原始x坐标加上原始y坐标乘以b的值。如果b的值是正数,那么图形将向左上方剪切;如果b的值是负数,那么图形将向左下方剪切。

举个例子,如果b的值为0.5,变换矩阵就是 1 0 0.5 -1,那么一个点 (2, 3) 在应用这个变换后将会变成 (2 + 3*0.5, -3) = (3.5, -3)。这表示点在x方向上被剪切了,并且相对于原始位置在y轴上向下移动了。

同时,请注意变换矩阵的最后两个数值(在这个例子中未给出)将控制平移操作。这两个数值分别代表在x轴和y轴上的平移距离。在上面的例子中,我们仅讨论了由 1 0 b -1 四个数值定义的线性变换部分。

剪切操作在图形设计中不常用,但在某些特殊效果或动画中可能会被用到。在PDF文档中,它可能用于创建独特的页面布局或视觉特效。

标签:cm,stream,变换,0.5,矩阵,文件格式,坐标,PDF,剪切
From: https://blog.csdn.net/zhbzhb324/article/details/137402154

相关文章

  • Cisco Modeling Labs (CML) 2.7 - 网络仿真工具
    CiscoModelingLabs(CML)2.7-网络仿真工具思科建模实验室(CML)请访问原文链接:https://sysin.org/blog/cisco-modeling-labs-2/,查看最新版。原创作品,转载请保留出处。CiscoModelingLabs是我们用于网络仿真的首要平台。凭借易于使用的HTML5UI和全面的API,思科建模实......
  • 鸿运(通天星CMSV6车载)主动安全监控云平台inspect_file/upload存在任意文件上传漏洞
    声明:本文仅用于技术交流,请勿用于非法用途由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。简介鸿运(通天星CMSV6车载)主动安全监控云平台实现对计算资源、存储资源、网络资源、云应用服务进行7*24小时......
  • Linux上CMAKE的使用
    Linux上CMAKE的使用简单使用格式如下:cmake_minimum_required(VERSION3.0)#最低版本3.0project(main)#项目名称#配置编译器set(CMAKE_CXX_FLAGS${CMAKE_CXX_FLAGS}-g)#配置头文件搜索路径#include_directories()#配置库文件搜索路径#link_directories()#......
  • 帝国CMS模板源码整站安装说明
    安装步骤第一步:先把得到的文件解压缩,把文件通过FTP传到空间里。(请不要把类似ecms014.cncobo.com这个文件夹传到FTP,请传这个大文件夹下面的所有文件夹和文件到空间根目录,请不要上传到2级目录,除非你自己会改模板CSS和JS调用相对地址!)第二步:浏览器键入你的域名或者IP/e/install/inde......
  • CMT313个人投资组合评估方法
    课程评估形式模块代码:CMT313课程名称:软件工程评估题目:个人投资组合评估编号:第3个,共3个日期设置:19/02/2024提交日期和时间:春季工作周,2024年5月2日上午9:30反馈返回日期:2024年6月5日如果您因情有可原的情况获得延期,那么提交截止日期和返回日期将晚于上述日期。当您的延期获得批准时,......
  • CMU15418-Assignment2-解析
    CMU15418-Assignment2-解析这个作业有三个部分,都是CUDA编程.前两个比较简单,最后一个比较难.本文的运行环境:RTX3090CUDA12.2作业描述,原版代码链接,我完成的代码链接.Part1:SAXPY用CUDA实现一个在GPU上运行的SAXPY程序.输入两个数组X,Y以及一个常......
  • 02-JDK新特性-Stream流
    Stream流什么是Stream流Stream流是Java8中的一个新特性,它提供了一种处理集合和数组的方式。Stream流可以让我们以一种更加简洁、高效、可读性更强的方式来处理数据。Stream流可以用于过滤、映射、排序、聚合等操作,它可以让我们避免使用循环和条件语句来处理数据,从而让代......
  • jdk8 StreamAPI 的使用
    本文将以UmsMenu对象为例来介绍StreamAPI的常用操作。UmsMenu是一个菜单对象,具有树形结构,对象定义如下Stream对象的创建Stream对象分为两种,一种串行的流对象,一种并行的流对象。1//menuList指所有菜单列表2//为集合创建串行流对象3Stream<UmsMenu>stream=menuLis......
  • Nginx 配置反向代理时出现 502 Bad Gateway (13_ Permission denied) while connectin
    我们在Nginx配置反向代理后,可能会出现如下报错:502BadGateway(13:Permissiondenied)whileconnectingtoupstreamSorry,thepageyouarelookingforiscurrentlyunavailable.<br/>Pleasetryagainlater.这些错误,一般是由SELinux引起的(https://stackoverf......
  • 基于CMDKEY的方式修改用户凭据
    1、通过CMD方式在Windows中,凭据是指用户登录系统时的用户名和密码。在CMD中,可以使用cmdkey工具来添加、删除或更新凭据。例如,要添加新的凭据以连接到远程资源,可以使用以下命令:cmdkey/add:TargetName/user:Username/pass:Password这里的TargetName是远程资源的名称,......