数学公式注释 - 常用几何数学公式记录
最编程
2024-07-11 11:12:49
...
几何公式汇总,方便备忘复查
note:一个好用的在线可视化方程式网站:https://www.desmos.com/
dot函数 表示点乘(Dot Product)
cross函数 表示叉乘(Cross Product)
||A|| 球绝对值
运算:
点乘求夹角
叉乘求垂直向量
向量:
1.投影(Projection):
//投影公式:V在N的投影为V∥分量 V∥ = N * dot(V , N) / |N|^2 当N为单位向量时简化为: N * dot (V,N) //可分解出垂直向量V⊥分量: V⊥ = |V| - N * dot(V, N) / |N|^2 当N为单位向量时简化为: |V| - N * dot(V, N)
矩阵:
1.线性方程组求解:
https://www.shuxuele.com/algebra/systems-linear-equations-matrices.html
2.逆矩阵:
https://www.shuxuele.com/algebra/matrix-inverse.html
多面体:
所有多面体都满足;
V - E + F = 2//(欧拉特性) V(Vetex)=顶点数、E(Edge)=边数,F(Face)=面数
图元常用公式(相交性):
图元方程式:
直线L(向量式)(仅2D):
L => dot(p, n) = d p == 直线上一点 n == 垂直于L的单位向量 d == 原点到直线的最短距离
射线PL(参数式):
PL => Porg + tN Porg == 射线上一点 t == 代入参数 N == 方向向量
平面P(一般式):
P =>
ax + by + cz + d = 0 => -(ax + by + cz) = -d => 反向的平面P一般式方程式: ax + by + cz = d n = [a,b,c],p = [x,y,z] 可以得出法向式: dot (n,p) = d
平面P(向量式):
p => dot(p, n) = d p == 平面上一点 n == 平面法向量 d == 原点到平面的最短距离
仅(2D),求点Q到平面上的最近点Q'(Q到平面的投影)(N为平面法向量,P为平面上任意一点):
距离S = dot(Q, N) - D => S = dot (Q,N) - dot(P,N) 点Q' = Q + SN => Q' = ( dot(P,N) - dot (Q,N) ) * N
求点Q到射线上的最近点Q‘(Q到射线的投影)(N为平面法向量,P为射线上任意一点):
根据PL = Porg +(t)N方程
t = dot(N,V) => dot(N, P - Q) 点Q' = P + tN => P + dot(N,P - Q) * N
求射线与平面的焦点Q'(NL为射线法向量,NP为平面法向量,Q为射线上任意一点,P为平面上任意一点):
t = (D - dot(Q,NP)) / dot(NL,NP) => (dot(P,NP) - dot(Q,NP)) / dot(NL, NP) Q' = Q + t * (NL) => Q + (dot(P,NP) - dot(Q,NP)) / dot(NL, NP) *(NL)
dot(NL / NP) == 0时,射线与平面平行或重合.
求两条射线的焦点Q':
D2 = dot(P2, N2) D1 = dot(P1, N1) t1 = dot(cross( (D2 - D1), D2), cross(D1,D2) ) / (||cross(D1,D2)|| ^ 2) t2 = dot(cross( (D2 - D1), D1), cross(D1,D2) ) / (||cross(D1,D2)|| ^ 2) Q' = P1 + t1 * N1 <=> Q' = P2 + t2 * N2
cross(D1,D2) == 0 时 两条射线平行或重合
求点Q到圆上或球上的点Q'(R为半径,C球心或圆心):
D = C - Q B = ||D|| - R / (||D||) * D Q' = Q + B