原创 四元數計算——乘法 規範化 點乘 共軛 冪運算

#pragma once #include "Vector3.h" class Quaternion { public: float w, x, y, z; void Identify() { w = 1; x = 0; y =

原创 四元數——概念以及相關數學公式 實現繞座標軸旋轉以及獲取旋轉角和旋轉軸

四元數與複數 複數 平面幾何意義一個向量 (2D) 複數做乘法 幾何上是一個新的向量 向量旋轉一定的角度 (2D)   擴展到3D 3個虛部的複數 四元數   [w (x y z)] = w+xi+yj+zk   i j k 的平方爲-1

原创 旋轉-歐拉角

矩陣表示旋轉賦值操作比較麻煩,使用歐拉角代替矩陣表示頂點旋轉 1.歐拉角轉變矩陣 2.矩陣轉歐拉角 3.萬向死鎖避免以及角度限制 #pragma once #include "RotationMatrix.h" #include "Ma

原创 光照漫反射(平行光)

Shader "Custom/test1" { SubShader { pass { Tags{"LightMode"="ForwardBase"}

原创 鏡面高光

1.求出入射光向量 2.頂點法線向量 3.根據CG函數求出 反射光 4.反射光與視向量點積 求出鏡面高光的係數 乘以對應顏色值 Shader "Custom/test1" { properties {

原创 設計模式精讀

外觀模式: 從原有系統中抽出一些接口(也可以自己擴展)形成一個新的接口(外觀類), 供客戶使用 減少了客戶與原系統內部的耦合,只需要與外觀類接口發生耦合即可 適配器模式:創建一個擁有所需接口的新類,然後包裝原來類的方法,達到適配

原创 矩陣-旋轉

class Vector3; class Matrix3X3 { public: float m11, m12, m13; float m21, m22, m23; float m31, m32, m33; void Set

原创 矩陣-齊次矩陣

1.正交矩陣 一個矩陣爲正交矩陣,就不需要求逆矩陣,直接使用正交矩陣作爲逆矩陣進行變換運算。施密特正交化。 2.3X3矩陣擴展爲4X4齊次矩陣 最後一行表示矩陣的平移 線性變換+平移 class Vector3; class Matr

原创 正交投影

#include <d3d9.h> #pragma warning( disable : 4996 ) // disable deprecated warning #include <strsafe.h> #pragma war

原创 矩陣-縮放投影鏡像切變

class Vector3; class Matrix3X3 { public: float m11, m12, m13; float m21, m22, m23; float m31, m32, m33; void Set

原创 矩陣-行列式以及矩陣的逆

class Vector3; class Matrix3X3 { public: float m11, m12, m13; float m21, m22, m23; float m31, m32, m33; void Set

原创 第一本算法書-結構

哈希表 哈希表存儲是由key value組成的數據 使用哈希表解決線性查詢費時的問題 準備數組來存儲數據 使用Hash計算哈希值 放入對應的數組位置中 放入過程中會遇到相同的值導致衝突 可以使用鏈表在已有數據的後面繼續存儲新數據(鏈地址法

原创 Lua-面向對象

--面向對象編程 --lua語言一張表就相當於一個對象 可以擁有很多狀態 也有一個與值無關的標識self Account ={balance=0} function Account.withdraw(v) Account.ba

原创 Lua程序設計-元表元方法

--元表和元方法 --Lua中每一個值都可以有元表 Lua語言中 只能爲表設置元表 如果爲其他類型設置 需要通過C代碼或者調試庫完成 --下面設置 獲取元表操作 local t={} print(getmetatable(t)) lo

原创 Lua程序設計-迭代器

--迭代器 --一種可以遍歷一個集合中所有元素的代碼結構 --函數表述迭代器 每一次調用 函數就會返回集合的下一個元素 --所有迭代器都需要在連續調用之間保存一些狀態 知道當前所處位置以及如何從當前位置到下一步位置 --自定義迭代器 閉