从 2 点、圆弧角和平面法线计算圆心 (3D)
Calculate circle center (3D) from 2 point, arc angle and plane normal
我需要从 2 点 (3D) 和弧角(平面法线也已知)计算 3D 圆心点。
我用 Google 搜索了它,但我认为我的英语不够好,无法正确搜索。有人知道这样做的计算方法吗?
我们有点 A, B
、法线 N
、角度 Fi
。
计算差向量(圆弧弦)和中点
AB = B - A
M = (A + B) / 2
使用向量积计算垂直于 AB
和 N
的向量 F
并将其归一化
F = AB x N
uF = F / len(F)
我们知道圆心 C
位于点 M
方向 F
的射线上(参数 t
等于中轴 CM
长度(中心弦距))
C = M + t * uF
t
值应该是多少?我们可以通过直角三角形AMC
参数
表示t
tan(Fi/2) = 0.5*len(AB) / t
所以最后中心是
C = M + uF * 0.5*len(AB) / tan(Fi/2)
注意圆心C
不是唯一的,因为我们不知道圆弧的方向(只需要在上一个公式uF
之前改变符号,得到对弦的镜像点C'
)
我需要从 2 点 (3D) 和弧角(平面法线也已知)计算 3D 圆心点。
我用 Google 搜索了它,但我认为我的英语不够好,无法正确搜索。有人知道这样做的计算方法吗?
我们有点 A, B
、法线 N
、角度 Fi
。
计算差向量(圆弧弦)和中点
AB = B - A
M = (A + B) / 2
使用向量积计算垂直于 AB
和 N
的向量 F
并将其归一化
F = AB x N
uF = F / len(F)
我们知道圆心 C
位于点 M
方向 F
的射线上(参数 t
等于中轴 CM
长度(中心弦距))
C = M + t * uF
t
值应该是多少?我们可以通过直角三角形AMC
参数
t
tan(Fi/2) = 0.5*len(AB) / t
所以最后中心是
C = M + uF * 0.5*len(AB) / tan(Fi/2)
注意圆心C
不是唯一的,因为我们不知道圆弧的方向(只需要在上一个公式uF
之前改变符号,得到对弦的镜像点C'
)