自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

XXHolic

https://github.com/XXHolic

  • 博客(116)
  • 收藏
  • 关注

原创 Field Play:Runge-Kutta

龙格-库塔法是一种求解常微分方程数值解的单步算法。

2022-08-22 08:13:48 260 1

翻译 【译】Filed Play:简介

数学函数可视化

2022-08-15 08:50:22 309

原创 JavaScript WebGL 绘制顺序

WebGL 绘制顺序

2022-08-08 08:40:17 445

原创 JavaScript WebGL 三维相关概念

WebGL 三维相关概念理解。

2022-08-02 08:46:21 396

原创 JavaScript WebGL 矩阵

引子本以为可以开始尝试三维的效果了,查了一下资料之后发现要先了解矩阵。在这里集中收集一下相关基础知识点。OriginMy GitHub简介简单来说,矩阵(Matrix)是数字按行和列的矩形排列。一般描述先行后列,例如下面 2×3 矩阵:矩阵中每个元素表示也可以根据行和列标记,例如 a1,2 表示第 1 行的第 2 列元素。在应用数学学科中,矩阵常见于统计分析。在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用。计算机科学中,三维动画制作需要用到矩阵。单位矩阵单位矩阵有如

2022-03-26 16:40:01 1476

原创 风场可视化:随机重置

引子在绘制轨迹的效果中,过一段时间就会发现,最后只剩下固定的几条轨迹,原文中也提到了这种现象,也提供了解决思路,个人还是想结合源码再看看。源库:webgl-windOriginMy GitHub原因随着时间推移,有些粒子产生的偏移超过了范围就会消失,所以需要随机重置消失的风粒子。解决方案需要考虑的问题有:什么时候重置?重置的判断条件是什么?重置的方式是什么?什么时候重置?在绘制轨迹中,我们知道了产生的偏移是在最后更新粒子纹理信息阶段,这个时机判断保留新的粒子状态

2022-03-19 09:39:33 551

原创 风场可视化:绘制轨迹

引子了解绘制粒子之后,接着去看如何绘制粒子轨迹。源库:webgl-windOriginMy GitHub绘制轨迹在原文中提到绘制轨迹的方法是将粒子绘制到纹理中,然后在下一帧上使用该纹理作为背景(稍微变暗),并每一帧交换输入/目标纹理。这里涉及两个重点使用的 WebGL 功能点:JavaScript WebGL 图片透明处理JavaScript WebGL 帧缓冲区对象基于绘制粒子的基础上,增加逻辑的主要思路:初始化时,增加了背景纹理 B 和屏幕纹理 S 。创建每个

2022-03-12 09:49:26 1920

原创 风场可视化:绘制粒子

引子了解风场数据之后,接着去看如何绘制粒子。源库:webgl-windOriginMy GitHub绘制地图粒子查看源库,发现单独有一个 Canvas 绘制地图,获取的世界地图海岸线坐标,主要格式如下:{ "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": { "scalerank": 1, "featu

2022-03-05 09:47:55 1183 1

原创 风场可视化:风场数据

引子了解 WebGL 基础之后,接着去看获取解析风场数据的逻辑,又遇到问题。系统:MacOS版本:11.6OriginMy GitHub安装 ecCodes在文章示例源库的说明中,首先要安装 ecCodes ,尝试使用 HomeBrew 但不行。于是就按照 ecCodes 源库的介绍本地进行编译安装。在进行第 4 步的时候,碰到了问题:No CMAKE_Fortran_COMPILER could be found.查询资料说是缺少 gfortran ,可以使用命

2022-02-20 14:37:52 2759

翻译 【译】A GPU Approach to Particle Physics

引子想到原文中有提到参考的教程,就去看了下,发现对一些逻辑的理解很有帮助,顺便翻译记录一下。原文:A GPU Approach to Particle PhysicsOriginMy GitHub正文我的 GPGPU 系列的下一个项目是一个粒子物理引擎,它在 GPU 上计算整个物理模拟。粒子受重力影响,会与场景几何体产生反弹。这个 WebGL 演示使用了着色器功能,并不需要严格按照 OpenGL ES 2.0 规范要求,因此它可能在某些平台上无法工作,尤其是在移动设备上。这将在本

2022-02-13 12:11:24 248 1

翻译 【译】How I built a wind map with WebGL

引子对风场可视化的效果感兴趣,搜资料的时候发现这篇文章,读了后觉得翻译一下以便再次查阅。原文:How I built a wind map with WebGLOriginMy GitHub正文查看我的基于 WebGL 的风场模拟演示!让我们深入了解它的工作原理。我要坦白的说:在 Mapbox 工作的最后几年里,我像躲避瘟疫一样避免直接的 OpenGL/WebGL 编程。原因之一:OpenGL API 和术语让我深感恐惧。它看起来总是那么复杂、混乱、丑陋和冗长,以至于我永远都

2022-02-07 09:00:10 373

原创 JavaScript WebGL 帧缓冲区对象

引子在看 How I built a wind map with WebGL 的时候,里面用到了 framebuffer ,就去查了下资料单独尝试了一下。OriginMy GitHub帧缓冲区对象WebGL 有一个能力是将渲染结果作为纹理使用,使用到的就是帧缓冲区对象(framebuffer object)。在默认情况下,WebGL 最终绘图结果存储在颜色缓冲区,帧缓冲区对象可以用来代替颜色缓冲区,如下图所示,绘制在帧缓冲区中的对象并不会直接显示在 Canvas 上,因此这种技术也被称为离屏

2022-02-01 18:45:05 3289

原创 JavaScript WebGL 图片透明处理

引子JavaScript WebGL 使用图片疑惑点中提到两张图片叠加,默认情况下,即使有透明的区域也不会透过看到。现在就来看这个透明的处理。OriginMy GitHub关于透明说到透明,在颜色编码中由 Alpha 通道负责,透明度存储方式有:Premultiplied Alpha :表示颜色信息在存储的时候会将透明信息与 RGB 相乘,比如 RGB 是 (1, 1, 1),透明度为 0.5 ,那么存储时为:(0.5, 0.5, 0.5, 0.5) 。Non-premultiplied

2022-01-17 09:07:06 621

原创 JavaScript WebGL 使用图片疑惑点

引子JavaScript WebGL 使用图片之后产生了一些疑问。OriginMy GitHub为什么纹理坐标取几个点就可以获取图片内容?WebGL 中图像的坐标系原点位于左下角,水平正方向向右,垂直正方向向上。纹理坐标是表示图像中位置的两个分量。第一个分量 s 是距离图像左侧的百分比。第二个分量 t 是距离图像底部的百分比。WebGL 中几何体最终都是由三角形构成,使用图片的时候不一定都是三角形,需要使用纹理坐标指定对应分解的三角形顶点在图像中的位置。为了让纹理坐标适用任何图像,使用百分比指

2022-01-10 08:42:26 275

原创 JavaScript WebGL 使用图片

引子JavaScript WebGL 设置颜色效果始终有限,这时候就会想到使用图片,这就涉及到 WebGL 中的纹理使用,比预想中要麻烦的多。OriginMy GitHub使用图片纹理(texture)可以用来添加模拟物体的细节,在 3D 游戏中各种模拟的物体都使用了纹理。在绘制矩形的基础上主要有以下几个方面的变化:数据顶点着色器片元着色器缓冲纹理坐标数据加载并创建纹理绘制数据先准备一张图片,然后为了把纹理映射到对应的矩形上,需要指定矩形每个顶点各自对应纹理的那个位置。纹

2022-01-04 08:47:00 706 2

原创 JavaScript WebGL 设置颜色

引子JavaScript WebGL 绘制一个面之后想着可以尝试复杂一点的了,没想到设置颜色的时候又出现问题了。OriginMy GitHub设置颜色在之前的示例中,都是设置单一的颜色,但每个顶点都可以拥有各自的颜色信息。基于绘制三角形主要有下面几方面变化:数据顶点着色器片元着色器缓冲颜色数据数据颜色数据有 4 个分量:R、G、B、A 。 let colors = [ 1.0, 0.0, 0.0, 1.0, // red 0.0, 1.0, 0.0, 1.

2022-01-01 13:34:08 2352

原创 JavaScript WebGL 绘制一个面

引子JavaScript WebGL 基础疑惑点之后进行了一些优化,然后尝试绘制常见二维的面。WebGL 中几何体最终都是由三角形构成,由三角形切入比较合适。OriginMy GitHub绘制三角形这是示例,基于绘制一条直线主要的变化有:顶点绘制图元顶点三角形有三个顶点,在基础疑惑点中知道坐标系是右手坐标系,个人习惯描述顶点的顺序以图形中心为原点,从第一象限到第四象限。 let vertices = [ 0.5, 0.5, 0.0, // 第一象限 -0.5,

2021-12-20 08:59:45 403

原创 JavaScript WebGL 基础疑惑点

引子尝试 JavaScript WebGL 绘制一条直线 之后总算是熟悉了一点,但还是有些疑惑,在此集中记录一下。OriginMy GitHub顶点坐标范围为什么要在 -1.0 到 1.0 之间 ?在绘制直线的示例中,如果按照 Canvas 的大小修改顶点坐标,发现大都看不到对应的点。查资料说每个顶点的 x,y,z 坐标都应该在 -1.0 到 1.0 之间,超出这个坐标范围的顶点都将不可见。原因是整个过程中涉及到多个坐标系统的转换。多个坐标系转换的优点是,一些操作或运算在特定的坐标系中才有意

2021-12-13 09:06:25 172

原创 JavaScript WebGL 绘制一条直线

引子接着 WebGL 基础概念,做一个绘制直线的简单示例。主要参考以下两篇文章:绘制一个点绘制三角形OriginMy GitHub绘制一条线下面不会对每个使用的函数进行详细的解释,个人比较喜欢先对整体逻辑有个感觉,实际使用时再按需去查资料。创建 WebGL 上下文在基础概念中有提过是通过 Canvas 元素使用 WebGL : <canvas id="demo" width="300" height="200"></canvas> c

2021-12-06 08:53:54 1461

原创 JavaScript WebGL 基础概念

引子看了一个库的源码,里面用到了 WebGL ,就开始找 WebGL 的资料。发现相关的知识点很多,按照自己的理解习惯进行了整理记录。OriginMy GitHub简介WebGL 是一个跨平台、免费的开放式 Web 标准,用于基于 OpenGL ES 的初级 3D 图形 API 。可在任何兼容的 Web 浏览器中渲染高性能的交互式 3D 和 2D 图形,而无需使用插件。在 JavaScript 中可以通过 HTML5 的 Canvas 元素使用。WebGL 1.0 基于 OpenGL ES 2

2021-12-01 08:50:29 1532

原创 JavaScript 数学曲线—心形线

引子继双角线,接着尝试心形线(Cardioid)。OriginMy GitHub简介Cardioid 是 Castillon 在 1741 年《Philosophical Transactions of the Royal Societyin》的一篇论文中首次使用的名称,它是一条曲线,是圆周上一点绕着半径相等的圆的圆周旋转所形成的轨迹。在笛卡尔坐标系中公式描述:其中 a 为常数。绘制参数化转换:这是示例,绘制主要逻辑代码:function draw() { let a =

2021-11-22 09:00:09 852

原创 JavaScript 数学曲线—双角线

引子继星形线,接着尝试双角线(Bicorn)。OriginMy GitHub简介双角线也称为三角帽(cocked-ha)曲线,是 Sylvester 在 1864 年研究的一组四次曲线的名称。Cayley 在 1867 年研究了同样的曲线。在笛卡尔坐标系中公式描述:其中 a 为常数。绘制参数化转换:这是示例,绘制主要逻辑代码:function draw() { let a = -100, start = 0; let x = 0, y = 0, points = []

2021-11-15 08:57:13 692

原创 JavaScript 数学曲线—星形线

引子继连锁螺线,接着尝试星形线(Astroid)。OriginMy GitHub简介Johann Bernoulli 在 1691-1692 年首次讨论了星形线。它也出现在 Leibniz 1715 年的信件中。它有时被称为四尖瓣,很明显因为它有四个尖。Astroid 直到 1836 年才在维也纳出版的一本书中获得了现在的名称。即使在 1836 年以后,文献中也出现了各种名称,包括 cubocycloid 和 paracycle 。在笛卡尔坐标系中公式描述:其中 a 为常数。绘制

2021-11-08 09:31:47 883

原创 JavaScript 数学曲线—连锁螺线

引子继等角螺线,接着尝试连锁螺线。OriginMy GitHub简介在 阿基米德螺线 中提到的通用的公式,当 c = -2 时,就是连锁螺线,又称为 Lituus 曲线。Roger Cotes 在他的著作 《Harmonia Mensurarum》(1722) 中对该曲线进行了描述。Maclaurin 在 1722 年为曲线命名。在极坐标系中公式描述:公式说明:r :径向距离。a :常数。θ :极角。绘制用 canvas 绘制曲线,canvas 的坐标系是笛卡尔坐标系,需

2021-11-01 08:58:06 313

原创 JavaScript 数学曲线—等角螺线

引子继阿基米德螺线之后,发现等角螺线。OriginMy GitHub简介等角螺线又称为黄金螺线或对数螺线,1638 年 Descartes 发现了等角螺线,后来 Jakob Bernoulli 研究发现了等角螺线自再造的特性,Jakob Bernoulli 对螺线非常着迷,以至于他要求刻在自己的墓碑上,并附词 “eadem mutata resurgo”(“纵使改变,依然故我”)。最后,Torricelli 独立完成了这项工作,并找到了曲线的长度。等角螺线名称的由来,由于其特性:在螺线上任

2021-10-25 09:09:01 1466

原创 JavaScript 数学曲线—阿基米德螺线

引子最近在研究曲线运动的时候,尝试了用 AI 导出的 SVG 路径之后,发现有些还是回归到数学中更合适一些。搜集了一些资料,尝试后总结一下。OriginMy GitHub简介阿基米德螺旋是以公元前 3 世纪希腊数学家阿基米德命名的螺旋。它是一个轨迹,对应于一个点在一段时间内的位置,该点沿着一条以恒定角速度旋转的线以恒定速度离开一个固定点。在极坐标系中的公式描述:当 c = 1 时,就是通常所说的阿基米德螺旋。公式说明:r :径向距离。a :常数,起始点与极坐标中心的距离。b :

2021-10-24 10:04:08 1021

翻译 【译】Learn D3 入门文档:Further Topics

引子继 Learn D3: Interaction 最后一篇。原文:Learn D3: Further Topics版本:Published Mar 24, 2020OriginMy GitHub正文如果你从一开始就坚持这个教程,深呼吸,鼓励一下自己!???? 你已经涵盖了很多领域,并对典型的可视化有了重要的了解。但我们还没有到达顶峰!不,这只是大本营。是时候向上看,看看未来会发生什么。????干净的数据是有效数据可视化的先决条件。想要体验数据收集和清理,请阅读关于

2021-10-08 08:11:17 124

翻译 【译】Learn D3 入门文档:Interaction

引子继 Learn D3: Joins 第八篇,只是英文翻译,可修改代码的部分用静态图片替代了,想要实时交互请阅读原文。原文:Learn D3: Interaction版本:Published Mar 24, 2020OriginMy GitHub正文几乎总是有太多的信息无法合理地“容纳”在图表中。因此,设计不仅仅是决定如何展示某些东西,而是根据我们认为对想象中的读者重要的东西,来决定展示什么和不展示什么。多亏了计算机,真正的读者现在有了发言权:可以根据读者兴趣的需要定制

2021-10-02 07:20:05 164

翻译 【译】Learn D3 入门文档:Joins

引子继 Learn D3: Animation 第七篇,只是英文翻译,可修改代码的部分用静态图片替代了,想要实时交互请阅读原文。原文:Learn D3: Joins版本:Published Mar 24, 2020OriginMy GitHub正文如果你熟悉此教程中的 D3 ,你可能会惊讶于 D3 选择器被提及的如此之少。那是因为你可能不需要它们!D3 选择器适用一个特殊的定位:快速,动态图表的增量更新。如果你关注的是静态图表,或者每帧都可以从头开始重新绘制的图表,那么

2021-09-22 08:53:07 229

翻译 【译】Learn D3 入门文档:Animation

引子继 Learn D3: Shapes 第六篇,只是英文翻译,可修改代码的部分用静态图片替代了,想要实时交互请阅读原文。原文:Learn D3: Animation版本:Published Mar 24, 2020OriginMy GitHub正文与在纸上绘制的图形不同,计算机图形不必是静态的;就像弗兰肯斯坦的怪物一样,他们可以通过动画活过来!✨上面的折线图逐步显示。这个可有可无的效果,应该谨慎使用,因为它会引起注意,但它至少强化了 x 代表时间,并给一个原本枯燥的图

2021-09-13 08:57:34 132

翻译 Learn D3 入门文档:Shapes

引子继 Learn D3: Scales 第五篇,只是英文翻译,可修改代码的部分用静态图片替代了,想要实时交互请阅读原文。原文:Learn D3: Shapes版本:Published Mar 24, 2020OriginMy GitHub正文SVG 和 Canvas 允许任何类型的图形是有意通用的;相比之下,D3 用于可视化,因此提供了专门的形状词汇,这些形状是生成路径数据的函数。路径可以画圆、矩形、直线、曲线、俯冲动作、老虎????, 还有你能想象到的任何事情。路径的

2021-09-06 08:53:08 194

翻译 【译】Learn D3 入门文档:Scales

引子继 Learn D3: Data 第四篇,只是英文翻译,可修改代码的部分用静态图片替代了,想要实时交互请阅读原文。原文:Learn D3: Scales版本:Published Mar 24, 2020OriginMy GitHub正文在 D3 数据图形所有工具中,最基本的是比例尺,它将数据的抽象维度映射到可视变量。为了尝试,看看这些小(但美味!)水果的数据集。我们通常认为维度是空间的,比如三维空间中的位置,但抽象维度不一定是空间的。它可能是定量的,例如上面每个水

2021-09-02 09:02:54 182

翻译 Learn D3 入门文档: Data

引子继 Learn D3: By Example 第三篇,只是英文翻译,可修改代码的部分用静态图片替代了,想要实时交互请阅读原文。原文:Learn D3: Data版本:Published Mar 24, 2020OriginMy GitHub正文在 Observable 上有多种方法可以获取数据。但由于我们刚刚开始,让我们使用最简单的:文件附件。这个笔记本有一个包含每日温度读数的 CSV 文件。我使用 Shift-Command-U ⇧⌘U 键盘快捷键添加它;你还可以通

2021-08-23 08:50:40 419

翻译 Learn D3 入门文档: By Example

引子继 Learn D3: Introduction 第二篇,只是英文翻译,可修改代码的部分用静态图片替代了,想要实时交互请阅读原文。原文:Learn D3: By Example版本:Published Mar 24, 2020OriginMy GitHub正文开始使用 D3 的最佳方式之一是浏览示例库。如果你运气好(而且有很多选择,你的几率也不错),你可能会找到一个可以重新调整用途的示例。这可以节省学习如何从头开始构建的大量精力。例如,要构造一个 treemap ,你

2021-08-16 09:53:50 228

翻译 【译】Learn D3 入门文档: Introduction

引子D3 很早就听说了想要尝试一下,找到的中文版翻译在查 API 的时候可以参考,对于入门不太方便,打算先把官方最新的入门教程同步翻译一下。原文:Learn D3: Introduction版本:Published Mar 24, 2020OriginMy GitHub正文本系列将引导你踏出使用 D3.js 的第一步。在我们开始之前,值得简单考虑一下:为什么要费心学习 D3 ?为什么要在 Observable 上学习?首先,D3 很受欢迎(179M 下载量和 97K

2021-08-09 09:34:13 755

翻译 Lerna 基本概念

引子最近工作上要接触相关的东西,开始熟悉文档,进行相关翻译记录,方便以后查阅。基于 Lerna 版本 : v3.22.1 。Lerna 是一个管理有多个包的 JavaScript 项目的工具。OriginMy GitHub关于将大的代码库分成独立版本的包,对于代码共享,是非常有用的。然而,在许多存储库中进行修改,会变混乱和难以跟踪,跨库的测试,很快会变的复杂。为了解决这些(和很多其它)问题,一些项目将会把他们的代码库组织成多个包的存储库(有些时候称为 monorepos)。像 Babe

2021-08-03 08:53:47 4539

原创 图片 src 为二进制的处理

引子请求一张图片,返回的数据类型是二进制,要将图片显示出来。OriginMy GitHub图片 src 为二进制的处理这种场景下,首先想到图片的 src 为 base64 的情况,了解 Base64 后,认为理论上可行。查询资料,发现了类似的疑惑和问题,在回复中提供的解决方法有:使用 URL.createObjectURL() 方法。使用 window.btoa() 方法。使用 FileReader 对象的 readAsDataURL() 方法。下面分别进行验证。方法URL.c

2021-07-19 16:52:03 622

原创 ASCII 和 Base64

引子在工作中,遇到了图片转换的问题,碰到了几个概念,查了点资料,在此记录一下。OriginMy GitHubASCIIASCII 的全称是 American Standard Code for Information Interchange(美国标准信息交换码),是电子通信的字符编码标准。ASCII 码表示计算机、电信设备和其它设备中的文本。大多数现代字符编码的制订都是基于 ASCII,尽管它们支持很多其它的字符。ASCII 是从电报码中发展出来的。第一次商业使用是由贝尔数据服务公司推广的

2021-07-12 09:15:23 1296

原创 CSS Writing Modes

引子对 CSS Flexible Box Layout 中的一些概念进一步阐述。OriginMy GitHub介绍CSS Writing Modes 定义的 CSS 功能,是为了支持国际上各种书写模式,例如从左到右的拉丁语和印度语,从右到左的希伯来语和阿拉伯语,双向的混合拉丁语和阿拉伯语和垂直的亚洲剧本。在 CSS 中 writing mode (书写模式)是由 writing-mode、direction、text-orientation 属性决定。它主要根据其 inline base d

2021-07-10 09:31:16 288

原创 屏幕尺寸、像素、分辨率和 devicePixelRatio

引子最开始写页面的时候,对页面里面的 px 还是蛮好奇的,电脑上的分辨率好像正好跟页面渲染的宽度值对应,但手机里面却不是这样的,记得当时还去找了相关资料,好像知道是怎么回事。最近脑海里再次想起了这个问题,但已经不知道该如何表述,又没有相关的笔记,这个觉得有必要区分一下相关的概念。OriginMy GitHub屏幕尺寸屏幕尺寸是指屏幕对角线的尺寸,经常看到的描述是英寸(缩写 in),1 in = 2.54 cm 。像素像素是屏幕上图像显示的最小可控元件,它不是一个点或者一个方块,而是一个抽

2021-07-03 09:53:49 736

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除