欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

数学公式注释 - 常用几何数学公式记录

最编程 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