8.5k 8 分钟

本文还在编写中 本文不保证完全正确,欢迎评论区留言讨论。 C++ 中变量初始化、对象构造、静态创建和动态创建、类成员初始化方式 # 变量初始化 参考自 cplusplus: Variables and types 有三种变量初始化方式: c-like initialization: type identifier = initial_value; 如 int x = 0; constructor initialization: type identifier (initial_value); 如 int x(0); uniform initialization: type...
1.6k 1 分钟

# 1 - 2138. Divide a String Into Groups of Size k class Solution: def divideString(self, s: str, k: int, fill: str) -> List[str]: n = len(s) ans = [] for i in range(n // k + 1): ans.append(s[i*k:(i+1)*k]) if len(ans[-1]) == 0: ans.pop() if len(ans[-1]) != k: ans[-1] = ans[-1] + fill * (k -...
2.4k 2 分钟

# 1 - 2133. Check if Every Row and Column Contains All Numbers class Solution: def checkValid(self, matrix: List[List[int]]) -> bool: n = len(matrix) for i in range(n): l = [False] * n for j in range(n): l[matrix[i][j] - 1] = True if not all(l): return False for j in range(n): l = [False] * n for...
2.5k 2 分钟

# 1 - 2129. Capitalize the Title class Solution: def capitalizeTitle(self, title: str) -> str: li = [] for s in title.split(): if len(s) <= 2: li.append(s.lower()) else: li.append(s[0].upper() + s[1:].lower()) return " ".join(li)# 2 - 2130. Maximum Twin Sum of a Linked List #...
4.2k 4 分钟

# Blinn-Phong Reflectance Model Blinn-Phong 着色模型分为三部分:环境光照、漫反射、镜面反射。 对于一个 shading point,需要的输入有相机相对这一点的方向 v 、光源相对这一点的方向 l 、这一点的法线方向 n ,还有一系列顶点自身属性数据(也就是之前说的表面纹理)。三个向量都是单位向量。 # Diffuse 漫反射 要注意漫反射和相机方向无关。 片段着色器: // diffusefloat diff = max(dot(norm, lightDir), 0.0);vec3 diffuse = uLight.diffuse * diff...
2.4k 2 分钟

# Texture Mapping 纹理顾名思义就是表面是什么样子的。 我们希望物体的不同地方有不同的属性,也就是在 shading 里说的顶点的自身属性。三维物体的表面都是二维,可以用一个二维的图来表示,被称作纹理。 纹理上的坐标一般用 uv 表示,我们姑且不管如何从一个纹理坐标映射到三维的表面坐标,暂时假设这个映射已存在。和普通的像素 pixel 相似,纹理上的像素被称为 texel。一般理想情况下一个 pixel 会被映射到一个 texel 上,如果不是理想情况则需要做一些处理。 一般约定纹理坐标 u 和 v 的范围都是 0~1。如果设置绑定到一个面上的纹理坐标为...
1.4k 1 分钟

# Weekly Contest 274 # 2124. Check if All A's Appears Before All B's class Solution: def checkString(self, s: str) -> bool: return "ba" not in s# 2125. Number of Laser Beams in a Bank class Solution: def numberOfBeams(self, bank: List[str]) -> int: ans = pre = 0 for s in...
12k 11 分钟

# Rotation & Scaling A 是一个旋转矩阵,坐标轴 xyz 经过它的操作就变成了 uvw。上图可以看到 A 在 xyz 坐标系下的坐标就是 uvw!!!所以 A 肯定是由正交单位向量组组成的,所以 A 是一个正交矩阵。因为正交矩阵的逆等于它的转置,所以我们可以用它的转置来方便的替代它的逆,旋转矩阵是正交矩阵这个性质我们之后会用到。 看到这里再回头看 GAMES101 里闫老师说的旋转矩阵,简直就是高维知识支配低维。 要进行缩放,左乘一个对角矩阵即可。 # Translation & Homogeneous...
658 1 分钟

# Binary Exponentiation Binary Exponentiation 快速幂算法,或者叫二进制取幂。 LeetCode 模板题:50. Pow(x, n) 递归版: bi-exp-recur.pyclass Solution: def myPow(self, x: float, n: int) -> float: if n < 0: return 1 / self.myPow(x, -n) if n == 0: return 1 if n == 1: return x return self.myPow(x * x, n // 2) * (x if n...
3.1k 3 分钟

# Weekly Contest 273 # 2119. A Number After a Double Reversal lc2119-1.pyclass Solution: def isSameAfterReversals(self, num: int) -> bool: s = str(num) s = s[::-1].lstrip('0') s = s[::-1] return int(s if s else '0') == num# 2120. Execution of All Suffix Instructions Staying in a...