自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 关于3D空间旋转的相关内容的记录(Euler Angles, Gimbal Lock, Quaternion, iOS CMAttitude)

最近看了些旋转相关内容(Euler Angles欧拉角,Gimbal Lock万向锁,Quaternion四元数,iOS CMAttitude),记录一下自己的理解和总结。更详尽的内容可以查看参考资料里的文章,讲得很棒。

2022-03-28 01:13:47 533

原创 又看了一次“浮点数的表示”

概述从读书到工作,关于“浮点数的表示”的内容,从不同的书籍/网页里都看过好几次了。当时看时可能觉得理解了,但时间一久,有些内容似乎又记不住了。一方面,可能大多数情况下无需了解;另一方面,可能是因为有些细节没有完全理解或没有注意。借着之前又看了一次“浮点数的表示”的内容,将相关的一些理解和总结记录一下。IEEE 754具体的内容可以查看参考资料,书里讲得非常好。这里简单列出几点:浮点数使用科学计数法的方式来表示小数。3个部分:符号位,指数(或叫阶码,这里统一叫指数),底数(或叫尾数,这里统一叫底数)

2021-07-12 01:12:56 253 2

原创 为什么Lottie动画无法使用AVVideoCompositionCoreAnimationTool导出

概述这篇文章主要想尝试解释一下“为什么Lottie动画无法使用AVVideoCompositionCoreAnimationTool导出“。有些说法是自己的理解,可能不会十分准确。如果有不正确的地方,可以一起讨论。首先,为什么想要知道“Lottie动画无法使用AVVideoCompositionCoreAnimationTool导出”的原因呢?因为如果知道无法导出的原因,我们就可能可以通过“修改Lottie”,或者“调整AVVideoCompositionCoreAnimationTool或相关类的使用

2021-07-05 18:44:09 902

原创 超级简单的获得变换矩阵(物体在新坐标系的坐标)的方法

概述在图形渲染过程的开始阶段,存在不同的坐标空间(例如,模型空间,世界空间,摄像头空间等)。我们需要计算出一个变换矩阵,从而在已知物体在旧坐标系的坐标的情况下,通过这个变换矩阵获得物体在新坐标系的坐标。这篇文章讲述的是一个获得这个变化矩阵的方法。这个方法是在参考资料里的视频学到的,有兴趣的同学可以查看。预备知识物体变-坐标系不变“物体变-坐标系不变”指的是一般的变换情况:在同一个坐标系下,物体做变换(位移,旋转,缩放等),通过一个变换矩阵,获得物体变换后的坐标。即,变换矩阵M*物体旧坐标=物体变换后

2021-06-21 02:22:56 3911 1

原创 Bellman-Ford算法的DAG视角

概述Bellman-Ford算法是一种“单源多目标“的通用的计算最短路径的算法。这篇文章并不是详细讲解Bellman-Ford算法的,而是介绍一种“从DAG算法逐步演化出Bellman-Ford算法”的方法。这个知识点是我从参考资料里的视频获得的,有兴趣的同学可以查看相关视频。这里主要记录我的理解和总结。一句话概括这篇文章的核心内容:“循环图变DAG”+“DAG算法” = “Bellman-Ford算法”。预备知识只有了解相关预备知识的前提下,才可以更好的了解这篇文章的内容。这里只是最简单的介绍相关

2021-06-20 02:28:36 219

原创 What‘s New in Core Image (iOS)

What's New时间 What's New 2020, iOS 14 更多内置filter(222) 2019, iOS 13 更多内置filter(219) 更方便的filter创建方式 2018, iOS 12 更多内置filter(200+)。例如:CICoreMLModel imageByInsertingIntermediate Metal Shading Language新

2020-12-04 17:16:56 123

原创 理解CAMediaTiming的beginTime

CALayer和CAAnimation都实现了CAMediaTiming协议。CAMediaTiming协议中有一个beginTime属性。这里记录一些对beginTime属性的理解。1、全局时间。Core Animation使用一个所谓的全局时间坐标系。这个全局时间坐标系的原点为设备重启完成的那个时刻,当前时间为“现在”距离“起始点”的秒数。CACurrentMediaTime函数即可返回这个秒数。2、层级和局部时间。layer和animation之间存在父子关系,从而形成层级。另一方面,每个la

2020-10-06 18:53:55 434

原创 Apple Open Source

Apple的开源其实做得很棒!http://www.opensource.apple.com/,这个Apple的官方开源网站真的是一个大宝藏。真的是不怕你知道,就怕你学不完,哈哈。WebKit就不用说了。在OS X和iOS分类下,有对应的WebKit的版本号,这里也可以快速知道相应操作系统里使用的WebKit版本。Objective-C Runtime。objc运行时是如何工作的?如何

2016-03-26 16:49:36 2386

原创 fishhook

fishhook是facebook提供的hook程序所使用的动态链接库的函数API的方法。原理就是通过重写__nl_symbol_ptr和__la_symbol_ptr存储的函数指针。具体情况可以直接查看fishhook的github主页的readme介绍以及fishhook的代码(readme写得算清楚,代码很少): https://github.com/facebook/fishhook。这里记

2016-02-20 21:29:33 818 1

原创 Code Signature的一些理解(升级版)

讲述Code Signature data的结构,特别是Code Directory blob和Signature blob。理清数字签名是如何生成和组织,以及操作系统是如何应用这个数字签名以及各个hash。了解后,可以对Code Signature相关内容有个总体的认识。

2016-02-07 03:57:53 11206

原创 Windows 8.1下安装Mac OS X 10.8虚拟机

1、准备宿主操作系统:Windows 8.1 64位。特别地,需要CPU支持硬件虚拟化。如果Windows 8.1上安装了hyper-v,就表示肯定是支持的了。需要的软件:1)VMware Player 7.0https://my.vmware.com/web/vmware/free#desktop_end_user_computing/vmware_player/7_0

2015-02-08 15:35:04 13563

原创 一张.NET 2015的图

两个关键词:“开源”和“跨平台”。需要注意的是实现真正意义开源和跨平台的是.NET Core,而不是.NET Framework。.Net Framework(上图的左上部分)部分早开源了,但只是开放源代码而已,但是,这次将开源协议更改为MIT了,也很有意义。

2014-11-15 22:24:52 1950

原创 V8 API文档

在学习一个开源项目,一般有几个

2014-06-07 18:35:28 2795

原创 使用Visual Studio 2010编译WebKit

一直有想编译WebKit的想法,可以一直都没有具体实施。最近,终于将WebKit给编译通过了!虽然,只是编译通过,只是学习WebKit开始的一小步,但是,感觉还是很爽的!        印象中,感觉在Windows下编译WebKit是很繁琐复杂的。但是,在这次成功编译WebKit的过程中发现,只要相关工具安装在“默认”的路径上,成功编译WebKit还是相对简单容易的。只需要按照WebKit官方

2013-10-02 02:17:17 10621 5

翻译 WebCore Rendering 5 - 浮动

“浮动(Float)”指的是渲染树节点被移至段落的左边或段落的右边。段落的内容就环绕在浮动对象的周围。你可以看到,本段落就是一个浮动的例子。在段落的右上角有一个紫色的盒子。注意,段落中的文字是如何环绕和避开这个浮动对象的。        下面是对上面这个浮动的紫色盒子的描述:                有一些HTML语法同样表示了这个CSS浮动形为。例如:img元素的align属性

2012-09-09 15:52:30 651

翻译 WebCore Rendering 4 - 绝对/固定定位和相对定位

CSS里的position属性可以用来对一个对象相对于某个容器块(containing block)进行相对定位。该属性有4个值:'static'(静态), 'absolute'(绝对), 'fixed'(固定)以及'relative'(相对)。静态定位是默认值,表示使用正常的块和内联排版规则来对对象定位。相对定位(Relative Positioning)相对定位与静态定位非常相似,只是

2012-09-02 16:39:28 748

翻译 WebCore Rendering 3 - 排版基础

当渲染树节点首次创建并加入到渲染树时,它还没有任何位置和大小信息。计算各个盒(Box)的位置和大小的过程即为排版(layout)。每一个渲染树对象都有一个排版方法。void layout()排版是一个递归操作。一个名为FrameView的类,其代表了文档所在的容器视图,它也有一个排版方法。框架视图对象负责渲染树的排版。FrameView可以执行两种类型的排版。一个是对整个渲染树进行排版

2012-08-26 15:49:35 726

翻译 WebCore Rendering 2 - 块和内联

在上一篇文章中,我们讲到了CSS盒模型的基本结构。在本文中,我们将继续讨论RenderBox类(继承于RenderObject类),以及关于块(block)和内联(inline)的概念。        一个块流(block flow)是一种盒类型,包括多行内容(例如,一个段落),或者其他按垂直顺序依次排列的块。在HTML里,p元素和div元素都是块流元素。        一个内联流(inl

2012-06-03 17:56:16 517

翻译 WebCore Rendering 1 - 基础

DOM树(The DOM Tree)        网页的HTML源代码会被解析成一棵名叫文档对象模型(Document Object Mode,DOM)的,由各个节点组成的树。树节点的基类为Node。         Node.h        节点被分成多种类型。与渲染代码相关的节点类型有:Document文档– DOM树的根节点为文档类型。文档类型相关的类有3个,Docu

2012-05-27 16:48:06 580

翻译 WebCore目录结构

至今为止,我们已经将源代码管理移至SVN(Subversion)。另一方面,我们正在对代码的目录结构进行调整。现在,WebCore模块拥有一个khtml目录和一个ksvg2目录。虽然,在KDE项目中,这两个目录的内容属于两个不同的模块,但是,在Webkit里,我们已经将这两个模块整合在一起(为了支持复合文档(Compound Document),以及更快的速度),接下来,我们想更进一步地将这两个目

2012-03-25 15:59:53 870

翻译 WebKit代码规范

缩进1、使用空格键(SPACE),不要使用表格键(TAB)。表格键应该只出现于表达对应语 义的文件里,例如,Makefile文件。2、缩进大小为4个空格。正确:int main(){    return 0;}错误:int main() {        return 0;}3、最外层namespace命名空间块的内容(包括最外层命名空间块的

2012-03-11 21:43:52 824

翻译 WebKit项目目标

WebKit是一个开源的Web内容引擎.。Web浏览器和其他应用程序可以通过WebKit来实现解析Web网页。我们追求使WebKit拥有更好的Web兼容性、标准性、稳定性、性能、安全性、可移植性、可用性以及易读易改(代码相对容易的阅读和修改,原文称之为Hackability)。目标Web内容引擎(Web Content Engine)        WebKit主要聚焦于解析万维网(W

2011-12-13 00:25:37 751

空空如也

空空如也

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

TA关注的人

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