惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
S
Secure Thoughts
博客园 - 三生石上(FineUI控件)
爱范儿
爱范儿
宝玉的分享
宝玉的分享
J
Java Code Geeks
博客园 - 司徒正美
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
腾讯CDC
S
SegmentFault 最新的问题
博客园 - 聂微东
Jina AI
Jina AI
C
CERT Recently Published Vulnerability Notes
Application and Cybersecurity Blog
Application and Cybersecurity Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Hacker News: Ask HN
Hacker News: Ask HN
N
News and Events Feed by Topic
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
PCI Perspectives
PCI Perspectives
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
P
Proofpoint News Feed
Stack Overflow Blog
Stack Overflow Blog
I
Intezer
P
Privacy & Cybersecurity Law Blog
小众软件
小众软件
I
InfoQ
S
Security Affairs
B
Blog RSS Feed
L
Lohrmann on Cybersecurity
Microsoft Azure Blog
Microsoft Azure Blog
Engineering at Meta
Engineering at Meta
T
Threat Research - Cisco Blogs
Hacker News - Newest:
Hacker News - Newest: "LLM"
H
Help Net Security
T
Tailwind CSS Blog
C
Check Point Blog
A
About on SuperTechFans
Google DeepMind News
Google DeepMind News
C
Cybersecurity and Infrastructure Security Agency CISA
Recorded Future
Recorded Future
Martin Fowler
Martin Fowler
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Simon Willison's Weblog
Simon Willison's Weblog
Blog — PlanetScale
Blog — PlanetScale
Cisco Talos Blog
Cisco Talos Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com

姓王者的博客

Linux用户Secure Boot自主维护指南 | 姓王者的博客 MAD Bugs 已经开始——关于信息安全的军备竞赛 | 姓王者的博客 解决钉钉Dingtalk无法在Linux新版内核上启动问题-修复可执行栈错误 | 姓王者的博客 突发:GitHub 正遭受大规模 Issue 赌博广告轰炸 | 姓王者的博客 Ubuntu26.04-beta体验:坚毅浣熊! | 姓王者的博客 fakeclaw装作龙虾发贴吧 | 姓王者的博客 找回12年前的QQ记忆 | 姓王者的博客 在Linux上玩Flash网页游戏-洛克王国 | 姓王者的博客 Copilot将使用交互数据来训练 | 姓王者的博客 重要通知-请更新我的GPG公钥 | 姓王者的博客 为了自由Android | 姓王者的博客 GPL"2,3"事 | 姓王者的博客 短文-对VitePlus的一点🤏小贡献 | 姓王者的博客 Bing收录没了?亲测有效的快速恢复指南 | 姓王者的博客 解决桌面设备二维码快速识别的工具-ClipQR | 姓王者的博客 解决 Nautilus 自定义终端插件安装依赖问题 | 姓王者的博客 OpenClaw 该熄火了 | 姓王者的博客 Vite8 - 统一的基建开始 | 姓王者的博客 Astro 6 推出啦 | 姓王者的博客 ubuntu的openvpn异常暂停推送更新 | 姓王者的博客 Ubuntu 24.04 安装 Win10 虚拟机 | 姓王者的博客 ESA-后记:热爱阿里云 | 姓王者的博客 Moonbit 0.8.0 重大发布,我也要改一下我的包 | 姓王者的博客 ESA Pages 边缘开发大赛获奖 | 姓王者的博客 Astro: 优化katex,mermaid和灯箱使用 | 姓王者的博客 从edgeone迁移到esa | 姓王者的博客 出租人类:AI时代的荒诞与真实 | 姓王者的博客 Astro 5.17构建性能优化实践:从18s到13s | 姓王者的博客 Moonbit License Checker 开发使用 | 姓王者的博客 Stalux Astro博客主题自荐 | 姓王者的博客 把Hexo永久链接迁移到Astro | 姓王者的博客 再见👋 LeanCloud | 姓王者的博客 2025年终总结 | 姓王者的博客 许可合规-fancybox | 姓王者的博客 博客主题的软著下来了 | 姓王者的博客 友链图谱 - 汇聚千丝万缕的联系 | 姓王者的博客 chen-er 专为Chen式ER图打造的npm包 | 姓王者的博客 为什么我推荐你使用GPG来加密你的邮件 | 姓王者的博客 2025第三方客户端登录东北大学邮箱 | 姓王者的博客 好久没更新了,过去与未来 | 姓王者的博客 1024 重要的日子 | 姓王者的博客 再也不见Windows10 | 姓王者的博客 偷梁换柱,解决Ubuntu24.04安装Packet Tracer缺失依赖问题 | 姓王者的博客 中秋-来试试Moonbit吧 | 姓王者的博客 Obsidian使用体验 | 姓王者的博客 猪猪侠·一只老猪的逆袭 | 姓王者的博客 国庆日纪念 | 姓王者的博客 GNU 42周年,AI时代的自由精神 | 姓王者的博客 解决Linux上启动游戏总是默认English的情况 | 姓王者的博客 7x24:运维使命 | 姓王者的博客 Tauri2.x实现系统菜单导航Vue路由 | 姓王者的博客 计算机图形学-基本图形生成算法 | 姓王者的博客 数据库原理-关系数据 | 姓王者的博客 数据库原理-设计技巧 | 姓王者的博客 数据库原理E-R模型 | 姓王者的博客 旧忆 - 我曾玩过的游戏 | 姓王者的博客 再谈自由软件 | 姓王者的博客 可能解决Tauri多窗口应用阻塞问题 | 姓王者的博客 Xingwangzhe! Z-Library We miss you and we need your help | 姓王者的博客 计算机组成原理第二章 - 定点数与浮点数 | 姓王者的博客 计算机组成原理第一章 | 姓王者的博客 不小心写死循环窗口弹出了 | 姓王者的博客 美化Grub界面 | 姓王者的博客 计算机图形学-图形的表示与数据结构 | 姓王者的博客 计算机图形学绪论 | 姓王者的博客 为什么说,大学教育与社会脱节 | 姓王者的博客 VSCode Remote 远程连接服务器记录 | 姓王者的博客 解决Tauri2.x拖拽事件问题 | 姓王者的博客 Tauri在GNOME46+上通知无效的临时解决方法 | 姓王者的博客 窃文者:未经授权转载我文章 | 姓王者的博客 GPG公钥分享文化 | 姓王者的博客 解决在ubuntu上,打包vscode插件问题 | 姓王者的博客 伪造squaremap的玩家显示 | 姓王者的博客 爆,沉浸式翻译泄露敏感信息 | 姓王者的博客 读书:《Free as in Freedom》——若为自由故 | 姓王者的博客 首页文章列表懒加载优化 | 姓王者的博客 Ubuntu 24.04 安装 Vivado 2018.3 | 姓王者的博客 腾讯Edgeone免费版体验 | 姓王者的博客 在 Ubuntu 上实现 Thetis FIDO U2F 密钥登录 | 姓王者的博客 Thetis物理密钥,为什么我们应该使用物理密钥 | 姓王者的博客 高考生过来看!教你精准转换录取位次! | 姓王者的博客 ubuntu无法访问windows磁盘问题 | 姓王者的博客 收信有感,防范钓鱼邮件 | 姓王者的博客 自由不止软件-记录一次zlib上传书籍 | 姓王者的博客 时隔两年,通关夺命邮差2 | 姓王者的博客 博客一周年了,竟然坚持了下来 | 姓王者的博客 Minecraft大电影:不建不散! | 姓王者的博客 是时候了解docker了! | 姓王者的博客 编译原理:LL(1)文法 | 姓王者的博客 编译原理:文法转换 | 姓王者的博客 离散数学:子群的陪集及拉格朗日定理 | 姓王者的博客 离散数学:半群,独异点 | 姓王者的博客 《人工智能生成合成内容标识办法》与个人博客--我们应该做什么? | 姓王者的博客 通识学习:形式语言与自动机,布尔代数与数进制 | 姓王者的博客 离散数学:代数系统(一) | 姓王者的博客 Webmapview:一个我的世界内置网页地图浏览Fabric模组 | 姓王者的博客 海岛机器人农场试玩 | 姓王者的博客 正则表达式学习 | 姓王者的博客 抓取个人博客文章目录到github主页 | 姓王者的博客 制作github贪吃蛇贡献图 | 姓王者的博客
新学期第一课《计算机图形学》报告 | 姓王者的博客
作者:xingwangzhe · 2025-09-01 · via 姓王者的博客

新学期第一课《计算机图形学》报告

🕒 阅读时间:4 分钟 📝 字数:1222 👀 阅读量: Loading...

平台/语言介绍

在现代计算机中,显示图形的地方有很多,在各个平台和语言中,我选择了较为广泛使用的 Canvas 作为实验平台。CanvasHTML5 中的一个元素,允许在网页中动态绘制图形。相比于传统的图形绘制方式,Canvas 具有更好的灵活性和易用性,非常适合在浏览器环境下进行图形编程。

JavaScript 作为一种动态类型的脚本语言,具有灵活性和易于学习的特点,同时,它的语法与 C/C++ 有很大相似性,便于上手理解。浏览器环境提供了便捷的开发条件,无需安装复杂的开发工具,只要有浏览器就能开始编程。

Canvas 2D API 提供了丰富的绘图功能,包括路径绘制、填充、描边、几何变换等。它的坐标系统以左上角为原点,x轴向右,y轴向下,这种设计直观易懂。

这个平台组合让我能够快速上手图形编程,同时又能深入学习计算机图形学的核心概念。

Canvas历史

Canvas的历史可以追溯到2004年,当时苹果公司的Safari浏览器团队为了开发一个在线绘图应用,引入了Canvas元素。这个想法来自于Mac OS X的绘图API,他们希望在网页中也能实现类似的动态绘图功能。

起初,Canvas只是Safari浏览器的私有功能,主要用于苹果的Dashboard小部件。但很快,其他浏览器厂商看到了它的潜力。2005年,Mozilla的Firefox浏览器开始支持Canvas,紧接着Opera和Google的Chrome也跟进支持。

2008年Canvas正式成为HTML5规范的一部分,这是一个重要的里程碑。从此,Canvas不再是某个浏览器的专有技术,而是Web标准的组成部分。W3C(万维网联盟)开始制定Canvas的详细规范,确保所有浏览器都能一致地实现这个API。

在随后的几年里,Canvas不断发展和完善。2009年Canvas 2D Context规范正式发布,定义了路径绘制、填充、变换等核心功能。2011年WebGL的引入让Canvas支持3D图形渲染,这大大扩展了Canvas的应用范围。

如今,Canvas已经成为Web开发中不可或缺的一部分,广泛应用于游戏开发、数据可视化、图像处理、动画制作等领域。它的出现让网页不再局限于静态内容,而是能够实现丰富的交互式图形应用。

小试牛刀,尝试绘制一个三角形

源代码

<!-- 规定图像区域 -->

<canvas id="canvas" width="400" height="400"></canvas>

<script>

// 获取Canvas元素对象,用于后续绘制操作

const canvas = document.getElementById("canvas");

// 获取2D渲染上下文,这是Canvas的绘图接口,支持路径、填充等操作

const ctx = canvas.getContext("2d");

// 开始一个新的路径,确保之前的绘制不会干扰

ctx.beginPath();

// 将画笔移动到指定坐标(x=200, y=50),这是三角形的顶点。Canvas坐标系以左上角为原点,x向右增加,y向下增加

ctx.moveTo(200, 50); // 顶点

// 从当前点绘制直线到左下角(x=100, y=350),这是三角形的左下顶点

ctx.lineTo(100, 350); // 左下角

// 从当前点绘制直线到右下角(x=300, y=350),这是三角形的右下顶点

ctx.lineTo(300, 350); // 右下角

// 闭合路径,将最后一个点连接回起点,形成封闭的三角形形状

ctx.closePath(); // 闭合路径

// 设置填充颜色为蓝色,这将用于填充路径内部区域

ctx.fillStyle = "blue"; // 设置填充颜色

// 执行填充操作,将路径内部用指定颜色填充,实现三角形的可视化

ctx.fill(); // 填充三角形

</script>


补充|题外话

作业要求图片 上述内容是我提交的作业报告,但是老师的ppt上还有许多内容非常有趣,在此进行补充


计算机视觉女神

lenna原图

Lena的故事1972年,一位名叫Lena Söderberg的瑞典模特为《花花公子》杂志拍摄了一张经典照片。没想到的是,这张照片的一个裁剪版本(只包含头部和肩膀)成为了计算机图形学图像处理领域最著名的测试图像。

根据她提议,《花花公子》的编辑们在她的名字里多加了一个“n”,写作“Lenna”,为了让英语读者更准确地发音(避免读作 “Lee-na”)

原文網址:https://kknews.cc/history/b56m5yn.html 故事的起源要追溯到1980年代。当时,南加州大学的两位研究人员Alexander Sawchuk和他的学生需要一张高质量的测试图像。他们从一本1972年的《花花公子》杂志上扫描了这张照片,并将其用于图像压缩算法的研究。

有趣的是,Lena本人直到2001年才知道自己的照片被用于学术研究。当她得知这个消息时,她感到非常的惊奇与兴奋

这个 意外 的选择背后有着深刻的原因:首先,这张照片包含了丰富的视觉特征——细节、平坦区域、阴影和纹理,非常适合测试各种图像处理算法其次,研究者们(主要是男性)自然会被这张美丽女性的照片所吸引

几十年来,Lena图像已经成为数字图像处理领域的经典测试图像,被广泛用于算法验证、论文发表和教科书示例。她的故事也成为了计算机科学史上的一个有趣的插曲,提醒我们技术发展有时会以意想不到的方式与流行文化产生交集。但是 曲尽人散终有时

IEEE计算机协会宣布从2024年4月1日起不再接受包含Lenna图的论文,原因是尊重照片主人的意愿并维护开放包容文化

一代女神就此落幕 Lena重拍图,展现当年风采

瑞典模特莱娜·瑟德贝里(Lena Soderberg,婚后名Lena Forsén)应美国《WIRED》杂志邀请,在瑞典重新拍摄了与其1972年《花花公子》杂志原片相同姿势的照片,以反映时代变迁和技术发展。

参考