图形学和Shader简单介绍

一次组内分享

先看一张图

如果这是一张用软件建模渲染的图,有人会说没什么稀奇。但其实这是一位叫iq大佬用各种数学公式通过Shader绘制的,是不是觉得不明觉厉。

Inigo Quilez,是一位用使用代码、数学、艺术进行shader编程,创建精美图像的大佬,同时也是一位滑雪高手。他说:你可以在电脑绘图方面打败我,但在滑雪方面不行

图形学被称为计算机的三大浪漫之一

阅读更多

记一次重置mysql8密码的操作

  1. 停止服务
1
service mysqld stop or systemctl stop mysqld.service
  1. 启动服务,不检查授权表
1
mysqld --skip-grant-tables --skip-networking &

报错:
sock 权限问题

1
sudo chown -R mysql:mysql /var/lib/mysql/
阅读更多

正则表达式中的断言

断言属于Group constructs,但是不匹配具体的东西,所以也被称为零宽断言。他们用来指定一个位置,为这个断言为真时才继续进行匹配。

捕获型匹配

(…) 匹配括号中的内容
(a|b) 匹配a或者b
(?<name>…), 同上但是为分组取一个名字,当分组很多时为分组取一个名字很有用。注:在golang,python中为(?P<name>...)
以上匹配都会占用匹配位置,并生成分组,正则表达式内可以通过\1,\2,\3 or \k<name> 来引用

阅读更多

python3 新特性总结

1. f-string 字符串插值

传统字符串格式化是使用%, python2.6 后引入了format提供了更强大,灵活的控制。python3 开始提供了字符串插值的方法,更加方便,清晰。这种方式在其它语言中并不陌生。

1
2
3
4
5
a = "Peeter"
b = 50
s = "{0} has {1:.2f} kg".format(a, b)

s2 = f"{a} has {b:.2f} kg"
阅读更多

go语言学习笔记

  • if 可以有多个;隔开的语句,if xxx; yyy {…}。 golang语句分隔符其实是;但是可以省略
  • golang 中函数名头大小写决定了函数在包外的可见性!
  • a := value 简短变量声明只能用 在函数内, 注意是 声明
  • go 中指针是不能改变的
  • 编译器自动选择在栈上还是堆上分配空间,但是不由var还是new方式决定!
  • 注意go 中 := 和 多重赋值, 和作用域的坑
  • 包导入:. “xx”, _ “xx”, f “xx”
阅读更多

Flutter中的Redux

flutter通过widget树的形式构建UI,不同的widget怎么去访问或者传递一个数据(状态),并且在这个状态改变后通知到其它Widget呢,官方简单demo中是通过构造函数的参数把数据或者修改数据函数传递给子widget,但是随着应用规模扩大,widget树会很复杂:

阅读更多

Google Flutter 初体验

最近想着做个app,自己有一点android开发经验,但是从来没做过ios开发,就想用跨平台的方式,一劳永逸。于是对比了不少跨平台的方案,iconic, xamarin, react native,最后本打算用react native,偶然发现flutter,google的产品,于是尝试了一下。

阅读更多

地铁移动广告原理的个人理解分析

坐地铁时,经常能在高速行驶的列车窗外看到稳定、甚至会“跟着车走”的动态广告。这个现象很有意思,我最初的直觉是:它应该利用了人眼的视觉暂留,以及列车本身的高速运动。

人眼和大脑会把短时间内连续出现的画面整合成运动感。电影常用 24 帧每秒,就是利用了类似的感知机制。不过地铁隧道广告和普通屏幕不完全一样:乘客本身在运动,广告装置固定在隧道壁上,所以它必须让乘客在经过不同位置时,看到一组在空间上和时间上都匹配的画面。

阅读更多

numpy中轴的理解

最近学numpy中的ndarray,许多函数如np.mean, np.sum, np.min等都有个axis的参数,那什么是轴呢?
其实就是数组的维度,对应ndarray.ndim的值, 也即ndarray.shape的len.

阅读更多