光学和光子学模拟工具在 AR/VR 中的作用
AR/VR 中的光学和光子学
增强现实 (AR) 和虚拟现实 (VR) 站在数字进化的前沿。光学和光子学这一复杂的科学深入研究了光的产生、检测和操控,在这一转变中发挥着至关重要的作用。
图 1 (a) 展示了 AR 系统的设计,强调了光学的关键作用。该图描绘了光的旅程:从光引擎到内耦合器,穿过波导,最终通过外耦合器与我们的眼睛相互作用。图 1 (b) 强调了使用 Ansys 进行虚拟原型设计的潜力,将 Lumerical 和 Zemax 的结果集成在一起,实现全面的 AR 系统模拟。
(一)(二)
图 1 (a) AR 系统示意图 (b) Ansys 的虚拟原型
图 2 展示了 Lumus 生产的 AR 眼镜的复杂组件。微型显示器、分束器、镜子、棱镜、准直器和 LED 等光源的重要性显而易见。光从平面内过渡到平面外的轨迹揭示了光学工程的奇迹。
图 2 Lumus 的 AR 眼镜(Exclusive: Lumus Maximus 2K x 2K Per Eye, >3000 Nits, 50° FOV with Through-the-Optics Pictures – KGOnTech
AR/VR 和模拟所面临的挑战
要使 AR 和 VR 设备彻底改变我们的体验,它们必须轻巧、用户友好,并且能够生成高清逼真的图像。满足这些要求包括:
- 在不影响性能的情况下平衡设备重量。
- 产生生动清晰的图像。
- 优先考虑用户的舒适度。
仿真工具(尤其是 Lumerical、Zemax 和 Speos)在解决这些挑战方面发挥着重要作用。它们确保设备符合行业标准,同时优化性能和用户体验。图 3 深入了解了 Ansys 的综合仿真方法,范围从纳米/微米级到系统级仿真。
图3 Ansys 虚拟样机
Ansys 开发了一种仿真工作流程,用于评估 AR 系统的光学性能,在特定照明条件下将光学系统与光栅集成在一起。Ansys Zemax OpticStudio 与 Ansys Lumerical 之间的合作带来了全面的系统级分析,其中 Ansys Speos 在集成和简化仿真过程中发挥了关键作用。图 4 描绘了 Lumerical、Zemax 和 Speos 用于 AR 眼镜的工作流程。
图 4. Ansys AR 眼镜仿真工作流程(https://optics.ansys.com/hc/en-us/articles/12157334700435)
Lumerical:光交互的强大引擎
Lumerical 因专注于光与物质的相互作用而脱颖而出。其优势在于:
- 光栅结构: Lumerical 擅长模拟光栅结构,这对于 AR 眼镜至关重要。其 FDTD Solutions 产品使设计师能够优化复杂的光栅行为,确保精确的光线方向,从而获得无与伦比的 AR 体验。
- 波导模拟:波导是 AR 眼镜中的光子高速公路。Lumerical 的解决方案是波导设计的灯塔,可实现紧凑高效的系统。
- 纳米光子元件:随着 AR/VR 设备的发展,纳米光子元件变得不可或缺。Lumerical 为这些设备提供精确的模拟工具,确保即使在极小的规模下也能达到最佳性能。
- 热管理: Lumerical 的多物理套件有助于了解光子设备的热动力学,这是 AR/VR 中用户安全和舒适度的一个关键方面。
- 软件集成: Lumerical 与其他设计软件的兼容性简化了从光学设计到光子模拟的过渡,加快了产品开发。
图 5 展示了各种光栅设计,突出了 Lumerical 的优化能力。
图 5展示了各种光栅设计,强调了 Lumerical 的优化能力。
Zemax OpticStudio:打造精准的光学设计
Zemax 因其光学设计能力而闻名,这对于以下方面至关重要:
- 全面的光学系统设计: Zemax 的 OpticStudio 提供了一个用于设计和优化完整光学系统的整体平台,确保无与伦比的视觉质量。
- 杂散光分析: Zemax 的工具可以减轻不需要的光线,从而提高图像质量。
- 虚拟原型: Zemax 促进快速设计迭代,从而节省时间和成本。
- 波导设计与分析: Zemax 在波导设计方面的能力可确保高效的光耦合和完美的图像投影。
Zemax 的工具包是 AR/VR 设计师的福音,可确保设备提供无与伦比的视觉体验。Lumerical 和 Zemax 之间的协同作用对于快速模拟至关重要。
图 6 Lumerical 与 Zemax 之间的协同作用对于快速仿真至关重要。(https://optics.ansys.com/hc/en-us/articles/9084380749587)
Speos:模拟人类感知
Speos 因强调人类的光学感知而脱颖而出。它对于以下方面至关重要:
- 人类视觉感知模拟: Speos 独特的模拟人类视觉感知能力可确保以用户为中心的优化。
- 集成 CAD 工作流程:与 CAD 平台的集成简化了设计流程。
- 先进的光建模: Speos 的综合光源和材料库能够对复杂的光行为进行精确的建模。
系统验证是 AR 系统开发的关键阶段,可确保设计符合人类的感知需求。此过程涉及在各种虚拟控制场景中测试和验证设计,涵盖一系列环境,例如室内、室外、自然光和人造光等不同照明条件以及一天中的不同时间。此验证的一个关键方面是了解人类视觉。所使用的模型深入研究了视觉的各个方面,包括暗视、中视和明视范围内的眼睛敏感度、眩光、眼睛从阴影到亮光的适应、色觉缺陷、观察者年龄的影响、视力敏锐度和景深。使用工具来评估可读性、可见性以及人眼感知到的不同颜色的区分能力。另一个关键方面是感知质量,它评估外部人如何看待耳机用户。借助 Ansys Lumerical、SPEOS 和 ZEMAX 等工具,AR 系统的设计得到优化,确保人眼可以在特定距离调整其焦点,从而提供无缝体验。无论是具有优化的内耦合光栅的 RGB 显示屏,还是带有 AR 涂层的光学抛光表面,每一个细节都经过精心验证,以确保用户的视觉体验无与伦比。
图 7 Speos 输出说明。
optiSLang 在光学模拟中的重要性
OptiSLang 是光学模拟领域的基石,尤其是在处理出瞳扩展器 (EPE) 等复杂系统时。在优化具有大量参数的系统时,其作用更加突出。原因如下:
- 系统级控制:OptiSLang 提供系统级优化的总体控制。通过调整光栅模型,确保整个 EPE 系统达到所需的光学性能。
- 动态链接:Lumerical 和 OpticStudio 等平台之间的动态链接由 optiSLang 高效管理。这确保 Lumerical 的精确光栅模型无缝集成到 OpticStudio 中。
- 高级优化技术:使用 optiSLang,优化过程不仅仅是调整参数。它采用高级技术,例如在每个优化周期中进行预处理和后处理。这包括将结果与瞳孔函数进行卷积等任务,这对于实现预期结果至关重要。
- Python 集成:在 optiSLang 中使用 Python 节点提供了一个灵活的环境,可用于定义函数、减少变量,从而缩短优化时间。这种集成允许采用更具针对性的优化方法,确保识别出影响最大的参数并进行相应调整。
- 可视化和分析:OptiSLang 不仅仅能进行优化;它还提供可视化多次优化运行结果的工具。这有助于理解权衡利弊并做出明智的决策,做出最佳设计选择。
图8展示了使用Optislang优化AR波导的工作流程。
图 8使用 Optislang 优化 AR 波导的工作流程。(https://optics.ansys.com/hc/en-us/articles/17721058552083)
结论
在快速发展的 AR 和 VR 世界中,光学和光子模拟的精度和效率至关重要。Lumerical 以其在光栅和波导设计方面的专业知识而闻名,Zemax OpticStudio 以其无与伦比的光学设计实力而闻名,而 Speos 则特别注重人类的光学感知,这些工具之间的复杂协同作用正在共同塑造下一波沉浸式体验。随着 AR/VR 设备追求轻量级设计、逼真的高清图像和最佳用户舒适度,模拟的重要性呈指数级增长。利用这些工具的功能,从详细的波导模拟到细致入微的人类视觉感知建模,成为寻求在 AR/VR 领域取得领先地位的事业的基石。随着我们继续重新定义数字沉浸的极限,光学、光子学和最先进的模拟工具的集成无疑将铺平前进的道路。
相关文章:
光学和光子学模拟工具在 AR/VR 中的作用
AR/VR 中的光学和光子学 增强现实 (AR) 和虚拟现实 (VR) 站在数字进化的前沿。光学和光子学这一复杂的科学深入研究了光的产生、检测和操控,在这一转变中发挥着至关重要的作用。 图 1 (a) 展示了 AR 系统的设计,强调了光学的关键作用。该图描绘了光的旅…...
大模型产品Deepseek(四)、本地安装部署(Ollama方式)
Ollama与DeepSeek的本地安装与部署教程(Windows/MacOS) 在许多AI应用场景中,您可能希望将智能模型本地化,以便更高效地处理数据并减少对外部云服务的依赖。本文将介绍如何在Windows和macOS上直接安装和配置Ollama,以及如何基于Ollama平台部署DeepSeek模型并进行本地交互。…...
visual studio安装
一、下载Visual Studio 访问Visual Studio官方网站。下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux 在主页上找到并点击“下载 Visual Studio”按钮。 选择适合需求的版本,例如“Visual Studio Community”(免费版本)&#x…...
AI大模型——DeepSeek模型部署实战
摘要 文章主要介绍了DeepSeek大模型的本地部署方法、使用方式以及API接入相关内容。首先指出可通过下载Ollama来部署DeepSeek-R1模型,并给出了模型不同参数版本及存储信息。接着说明了如何通过Chatbox官网下载并接入DeepSeek API,以及如何接入本地部署模…...
音视频的文件封装——AVI、MP4、MKV
3.MKV (Matroska Video File) Matroska (俄语: матроска )是一种多媒体封装格式,可把多种不同编码的影像、不同格式的音频、不同语言的字幕封装到一个文件内。也是一种开放源代码的多媒体封装格式。 Matroska 支持多种文件…...
讯飞绘镜(ai生成视频)技术浅析(五):视频生成
讯飞绘镜(AI生成视频)是一种先进的AI视频生成技术,能够将静态的分镜画面转换为动态视频,并使画面中的元素按照一定的逻辑和动作进行动态展示。 一、讯飞绘镜视频生成技术概述 讯飞绘镜的视频生成技术主要包含以下几个核心模块: 1.视频生成模型:包括生成对抗网络(GAN)…...
【FPGA】 MIPS 12条整数指令 【3】
实现乘除 修改框架 EX:实现带符号乘除法和无符号乘除法 HiLo寄存器:用于存放乘法和除法的运算结果。Hi、Lo为32bit寄存器。电路描述与实现RegFile思想一致 仿真 代码 DataMem.v include "define.v"; module DataMem(input wire clk,input…...
【补充】RustDesk一键部署及账号登录配置
前言 之前分享的配置rustdesk的帖子只是搭建了一个简易服务器,仅能实现简单的远程桌面功能。在后续的使用中切换设备使用时无法看到之前连接的设备,必须知道每个设备的id号,才能在新设备上连接。数据无法在设备间迁移,感觉很麻烦…...
2025.2.6 数模AI智能体大更新,更专业的比赛辅导,同提示词效果优于gpt-o1/o3mini、deepseek-r1满血
本次更新重新梳理了回复逻辑规则,无任何工作流,一共3.2k字细节描述。具体效果可以看视频,同时也比对了gpt-o1、gpt-o3mini、deepseek-r1-67BI,从数学建模题目解答上来看,目前我的数模AI智能体具有明显优势。 AI智能体优…...
昇腾,Ascend,NPU,mindie,镜像,部署vllm:第3篇,补档,没事可以看看这个readme
文章目录 前言文件位置已改变atb model和mindie的关系前言 在之前的版本中,我们提到了一个帮助文档(Readme),这个文档告诉我们,当时的mindie版本不支持0.5b版本的通义千问2.5 我现在就很好奇,新版的mindie,是否支持0.5b的版本呢? 文件位置已改变 之前的文件位置: …...
PbootCMS 修改跳转提示,修改笑脸时间
在使用时,每次都提示这个: 修改方法: 修改跳转时间:找到 handle.php 文件编辑 ,调整 setTimeout 函数的时间参数。 修改提示文字:编辑 handle.php 文件,修改提示文字的内容。 隐藏提示页面&am…...
Python办公笔记——将csv文件转Json
目录 专栏导读1、背景2、库的安装3、代码1—自定义表头4、代码2—全字段5、代码3—全字段总结 专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️🌈 博客主页:请点击——> 一晌…...
25/2/7 <机器人基础>雅可比矩阵计算 雅可比伪逆
雅可比矩阵计算 雅可比矩阵的定义 假设我们有一个简单的两个关节的平面机器人臂,其末端执行器的位置可以表示为: 其中: L1 和 L2 是机器人臂的长度。θ1 和 θ2是关节的角度。 计算雅可比矩阵 雅可比矩阵 JJ 的定义是将关节速度与末…...
流媒体缓存管理策略
缓存管理策略是指为了优化性能、资源使用和用户体验而对缓存数据进行管理的方法和规则。以下是一些常见的缓存管理策略: 1. LRU(Least Recently Used,最近最少使用) 原理:当缓存满了,需要腾出空间时&…...
【Sql Server】sql server 2019设置远程访问,外网服务器需要设置好安全组入方向规则
大家好,我是,欢迎来到《小5讲堂》。 这是《Sql Server》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 前言1、无法链接2、数…...
阿里云 | DeepSeek人工智能大模型安装部署
ModelScope是阿里云人工智能大模型开源社区 ModelScope网络链接地址 https://www.modelscope.cn DeepSeek模型库网络链接地址 https://www.modelscope.cn/organization/deepseek-ai 如上所示,在阿里云人工智能大模型开源社区ModelScope中,使用阿里云…...
Spring Test 教程大纲
Spring Test 教程大纲 目标:基于 JUnit 5,系统学习 Spring Test 的核心原理、注解使用、测试框架集成及扩展开发。 第 1 章:Spring Test 简介与核心原理 1.1 Spring Test 的作用与优势 简化 Spring 应用的单元测试与集成测试。核心目标&am…...
MySQL数据库基础(创建/删除 数据库/表)
一、数据库的操作 1.1 显示当前数据库 语法:show databases; <1>show 是一个关键字,表示要执行的操作类型 <2>databases 是复数,表示显示所有数据库 上面的数据库中,除了java113,其它的数据库…...
Llama最新开源大模型Llama3.1
Meta公司于2024年7月23日发布了最新的开源大模型Llama 3.1,这是其在大语言模型领域的重要进展。以下是关于Llama 3.1的详细介绍: 参数规模与训练数据 Llama 3.1拥有4050亿(405B)参数,是目前开源领域中参数规模最大的…...
PHP 面向对象编程详解
PHP 面向对象编程详解 引言 PHP 作为一种广泛使用的服务器端脚本语言,自诞生以来就以其简洁、易学、高效的特点受到开发者的喜爱。随着互联网技术的不断发展,PHP 也在不断地进化,其中面向对象编程(OOP)已经成为 PHP …...
YOLOv11-ultralytics-8.3.67部分代码阅读笔记-files.py
files.py ultralytics\utils\files.py 目录 files.py 1.所需的库和模块 2.class WorkingDirectory(contextlib.ContextDecorator): 3.def spaces_in_path(path): 4.def increment_path(path, exist_okFalse, sep"", mkdirFalse): 5.def file_age(path__fi…...
安卓开发,打开PDF文件
1、把PDF文件复制到raw目录下 (1)新建一个Android Resource Directory (2)Resource type 改成 raw (3) 把PDF文件复制到raw目录下 2、activity_main.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayoutxmlns:and…...
标准模版——添加蜂鸣器及继电器功能模块
一、peripheral.h代码 #include "STC15F2K60S2.H"void Set_Peripheral(unsigned char Buzzer_Status,unsigned char Relay_Status); 二、peripheral.c代码 #include "peripheral.h"void Set_Peripheral(unsigned char Buzzer_Status,unsigned char Rela…...
嵌入式工程师面试经验分享与案例解析
嵌入式工程师岗位受到众多求职者的关注。面试流程严格,技术要求全面,涵盖C/C编程、数据结构与算法、操作系统、嵌入式系统开发、硬件驱动等多个方向。本文将结合真实案例,深入剖析嵌入式工程师的面试流程、常见问题及应对策略,帮助…...
《云夹:高效便捷的书签管理利器》
在信息爆炸的时代,我们每天都会浏览大量的网页,遇到许多有价值的内容。如何高效地管理这些网页书签,以便随时快速访问,成为了一个重要的问题。云夹作为一款出色的书签管理工具,为我们提供了完美的解决方案。 强大的功能…...
ASP.NET Core标识框架Identity
目录 Authentication与Authorization 标识框架(Identity) Identity框架的使用 初始化 自定义属性 案例一:添加用户、角色 案例二:检查登录用户信息 案例三:实现密码的重置 步骤 Authentication与Authorizatio…...
Web - CSS3过渡与动画
过渡 基本使用 transition过渡属性是css3浓墨重彩的特性,过渡可以为一个元素在不同样式之间变化自动添加补间动画。 过渡从kIE10开始兼容,移动端兼容良好,网页上的动画特效基本都是由JavaScript定时器实现的,现在逐步改为css3过…...
css-根据不同后端返回值返回渲染不同的div样式以及公共组件设定
1.动态绑定 Vue: 使用计算属性 getClassName 来动态计算样式类名,并通过 :class 绑定到 div 元素上。 <template><div :class"getClassName">这是一个根据后端值动态设置样式的 div 元素。</div> </template><script> exp…...
ES6 Set 数据结构用法总结
1. Set 基本概念 Set 是 ES6 提供的新的数据结构,类似于数组,但成员的值都是唯一的,没有重复的值。Set 本身是一个构造函数,用来生成 Set 数据结构。 1.1 基本用法 // 创建一个空Set const set new Set();// 创建一个带有初始…...
Celery任务阻塞问题排查
笔者在工作中经常用到Celery,遇到了2个任务阻塞的问题,分享经验如下。 1 Celery原理 Celery是基于Python开发的分布式任务调度框架,可以将任务发送到若干台机器上,实现多并发调度和计算。Celery的架构主要包含生产者(…...
巧用DeepSeek,编写CAPL自动化测试脚本
文章目录 前言提问及回答小结 前言 蛇年伊始,火出圈的除了《哪吒2》登顶中国影史票房第一外,科技圈的DeepSeek国产大模型引爆全球,关于在DeepSeek上的提问无奇不有。就车载通信自动化测试,本文也来蹭蹭热度。作为CAN/LIN协议一致…...
【信息系统项目管理师】第21章:项目管理科学基础 详解
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 21.1 工程经济学21.2 运筹学1.线性规划2.一般的运输问题3.指派问题4.动态规划法5.最小生成树6.博弈论7.决策每年管理科学在综合题里固定是5分,案例分析和论文不考。主要是科学管理相关内容,包括工程经济学、运…...
webpack配置语言之---ts
由于webpack本身不支持ts,如果需要编译ts文件,需要下载相应的loader对ts文件进行编译,以及配置tsconfig.json文件,配置ts的编译选项 1. 安装必要的依赖 首先,确保你已经安装了 Webpack 和 TypeScript。如果还没有安装…...
WPF 进度条(ProgressBar)示例一
本文讲述:WPF 进度条(ProgressBar)简单的样式修改和使用。 进度显示界面:使用UserControl把ProgressBar和进度值以及要显示的内容全部组装在UserControl界面中,方便其他界面直接进行使用。 <UserControl x:Class"DefProcessBarDemo…...
金蛇祈福,鸿运开年!广州白云皮具城2025开市大吉!
锣鼓一响,黄金万两!2月6日大年初九,广州白云皮具城举行盛大的醒狮开市仪式!象征吉祥如意的醒狮,将好运、财运传递给全体商户和八方来客。 醒狮点睛 金鼓一响黄金万两,十头醒狮登台,董事总经理刘…...
centos虚拟机迁移没有ip的问题
故事背景,我们的centos虚拟机本来是好好的,但是拷贝到其他电脑上就不能分配ip,我个人觉得这个vmware他们软件应该搞定这个啊,因为这个问题是每次都会出现的。 网络选桥接 网络启动失败 service network restart Restarting netw…...
【ESP32cam人脸识别开门及服务器端实战源码】
本项目实现了一个基于ESP32-CAM的实时人脸识别系统,能够通过WiFi进行视频流传输,并在检测到人脸时触发开门指令。系统由两个主要部分组成:video.py(后端服务器)和 ESP32-CAM.ino(ESP32-CAM固件)…...
【自开发工具介绍】SQLSERVER的ImpDp和ExpDp工具04
SQLSERVER的ImpDp和ExpDp工具演示 1、指定某些表作为导出对象外 (-exclude_table) 验证用:导出的表,导入到新的数据库 2、指定某些表作为导出对象外 (-exclude_table) 支持模糊检索,可以使用星号 以s开头的表作为导出对象外,…...
什么是中间件中间件有哪些
什么是中间件? 中间件(Middleware)是指在客户端和服务器之间的一层软件组件,用于处理请求和响应的过程。 中间件是指介于两个不同系统之间的软件组件,它可以在两个系统之间传递、处理、转换数据,以达到协…...
WebSocket connection failed 解决
WebSocket connection failed 解决 前言 这里如果是新手小白不知道 WebSocket 是什么的? 怎么使用的?或者想深入了解的 那可以 点击这里 几分钟带你快速了解并使用,已经一些进阶讲解; WebSocket,多应用于需要双向数据…...
C语言:取出32位数据的高十六位
目录 背景 目标 操作步骤 1. 右移 16 位 2. 掩码操作(可选) 代码实现 解释: 输出: 总结: 背景 假设我们有一个 32 位的无符号整数,通常它是由 4 个字节组成的。每个字节由 8 位构成,4…...
JUnit 5 条件测试注解详解
JUnit 5 条件测试注解详解 JUnit 5 提供了一系列条件测试注解,允许开发者根据运行时环境、配置或自定义逻辑动态决定是否执行测试。这些注解能有效减少误报,提升测试的灵活性和适应性。以下是所有条件测试注解的详细介绍及示例: 一、条件测试…...
1 Java 基础面试题(上)
文章目录 前言1. Java 中的序列化和反序列化是什么?1.1 序列化(Serialization)1.2 反序列化(Deserialization)1.3 serialVersionUID1.4 序列化的应用场景1.5 Transient 关键字 2. 为什么 Java 里面不支持多重继承&…...
个人笔记---关于详解threadlocal 上下文环境存储的最佳数据类型
个人原因很久没有写代码,对于一些基础的数据类型有一些忘记,可以根据gpt和我当时的问答进行复习 关于拦截器,由于在请求的到达controller处理器之前,拦截器(当然过滤器也可以实现,我感觉都差不多)就把上下文设置在了线程副本中,那么这个请求到处理器的这些代码进行查询出来的上…...
JVM监控和管理工具
基础故障处理工具 jps jps(JVM Process Status Tool):Java虚拟机进程状态工具 功能 1:列出正在运行的虚拟机进程 2:显示虚拟机执行主类(main()方法所在的类) 3:显示进程ID(PID,Process Identifier) 命令格式 jps […...
【数据结构】树哈希
目录 一、树的同构1. 定义2. 具体理解(1) 结点对应(2) 孩子相同(3) 递归性质 3. 示例 二、树哈希1.定义2.哈希过程(1)叶节点哈希(2)非叶节点哈希(3)组合哈希值 3.性质(1) 唯一性 \re…...
UE5 蓝图学习计划 - Day 12:存储与加载
在游戏开发中,存储(Save)与加载(Load) 系统至关重要,玩家需要能够保存游戏进度、角色状态、道具数据等信息,并在下次启动游戏时恢复它们。UE5 提供了 SaveGame 蓝图类,帮助开发者快速…...
18爬虫:关于playwright相关内容的学习
1.如何在python中安装playwright 打开pycharm,进入终端,输入如下的2个命令行代码即可自动完成playwright的安装 pip install playwright ——》在python中安装playwright第三方模块 playwright install ——》安装playwright所需的工具插件和所支持的…...
图解BWT(Burrows-Wheeler Transform) 算法
Burrows-Wheeler Transform (BWT) 是一种数据转换算法, 主要用于数据压缩领域. 它由 Michael Burrows 和 David Wheeler 在 1994 年提出, 广泛应用于无损数据压缩算法(如 bzip2)中. BWT 的核心思想是通过重新排列输入数据, 使得相同的字符更容易聚集在一起, 从而提高后续压缩算…...
CMake轻松实现把编译生成文件分类输出到指定路径,同时又拷贝一份到别的指定路径(Window/Linux通用)
使用CMake管理的C项目工程你是否有以下需求: 1.项目编译时将生成的文件分类自动输出到指定位置; 2.除了上面输出到指定位置以外,还要拷贝一份到指定位置(包含头文件,配置文件,第三方依赖库文件等…...