求【高飞鸟】大师与各位大神帮忙解答一个数学题,求2个面相交的真实角度。
本帖最后由 hn10183051 于 2025-3-21 19:22 编辑已知条件:
平面A、B与水平面的夹角分别为a=110-90度,β=125-90度;
两平面在水平面的投影交角为θ=60度(即平面投影角)
二面角为C=132度
目标参数:
相贯线在平面A中与平面A内水平线形成的夹角V1=42度;
相贯线在平面B中与平面B内水平线形成的夹角V2=24度。
V1与V2的计算公式是怎么计算出来的?
本帖最后由 夏生生 于 2025-4-14 15:16 编辑
guosheyang 发表于 2025-4-11 21:31
朋友,我用这个文件中的红色线和蓝色线上的三个点(p1点为第一个点),用你的代码计算二面角和相交线,发 ...
修改了一下,逻辑有点不完整,没有判断pt是否与pt1重合,这里距离实际无所谓
;;;=============================================
;;; 通用函数两个面夹角及交线
;;;参数: pt1/2/3------面1上三点
;;; pt4/5/6------面2上三点
;;;返回值:两个面夹角及交线上两点
;;;根据点法式平面方程硬算
;;;MAT相关函数来自highflybir;;;<a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=99926&extra=page%3D2%26filter%3Dtypeid%26typeid%3D108" target="_blank">http://bbs.mjtd.com/forum.php?mo ... peid%26typeid%3D108</a>
;;;xty-acos为反余弦函数,自己写一个就行
(defun xty-g-angf&f(pt1 pt2 pt3 pt4 pt5 pt6 /abc defff g1 g2 g3 pt
u1 u2 v1 v2 w)
(setq v1(mapcar (function -) pt1 pt2)
v2(mapcar (function -) pt1 pt3)
abc (MAT:unit (MAT:vxv v1 v2))
v1(mapcar (function -) pt4 pt5)
v2(mapcar (function -) pt4 pt6)
def (MAT:unit (MAT:vxv v1 v2))
ff(MAT:vxv abc def)
u1(MAT:Dot abc pt1)
u2(MAT:Dot def pt4)
g1(- (* (caddr def) u1) (* (caddr abc) u2))
g2(- (* (cadr def) u1) (* (cadr abc) u2))
g3(- (* (car def) u1) (* (car abc) u2)))
(cond ((null (equal (setq w (car ff)) 0 1e-3))
(setq pt (list 0 (/ g1 w) (/ (- g2) w))))
((null (equal (setq w (cadr ff)) 0 1e-3))
(setq pt (list (/ (- g1) w) 0 (/ g3 w))))
((null (equal (setq w (caddr ff)) 0 1e-3))
(setq pt (list (/ g2 w) (/ (- g3) w) 0))))
;;;也可以输出(list (xty-acos (MAT:Dot abc def)) ff)ff为交线的单位向量
(list (xty-acos (MAT:Dot abc def))
pt
(mapcar (function +) pt (MAT:vxs ff (distance pt1 pt2)))))
如果知道面上的点可以用下面的方法
;;;=============================================
;;; 通用函数两个面夹角及交线
;;;参数: pt1/2/3------面1上三点
;;; pt4/5/6------面2上三点
;;;返回值:两个面夹角及交线上两点
;;;根据点法式平面方程硬算
;;;MAT相关函数来自highflybir
;;;http://bbs.mjtd.com/forum.php?mod=viewthread&tid=99926&extra=page%3D2%26filter%3Dtypeid%26typeid%3D108
;;;xty-acos为反余弦函数,自己写一个就行
(defun xty-g-angf&f(pt1 pt2 pt3 pt4 pt5 pt6 /abc defff g1 g2 g3 pt
u1 u2 v1 v2 w)
(setq v1(mapcar (function -) pt1 pt2)
v2(mapcar (function -) pt1 pt3)
abc (MAT:unit (MAT:vxv v1 v2))
v1(mapcar (function -) pt4 pt5)
v2(mapcar (function -) pt4 pt6)
def (MAT:unit (MAT:vxv v1 v2))
ff(MAT:vxv abc def)
u1(MAT:Dot abc pt1)
u2(MAT:Dot def pt4)
g1(- (* (caddr def) u1) (* (caddr abc) u2))
g2(- (* (cadr def) u1) (* (cadr abc) u2))
g3(- (* (car def) u1) (* (car abc) u2)))
(cond ((null (equal (setq w (car ff)) 0 1e-3))
(setq pt (list 0 (/ g1 w) (/ (- g2) w))))
((null (equal (setq w (cadr ff)) 0 1e-3))
(setq pt (list (/ (- g1) w) 0 (/ g3 w))))
((null (equal (setq w (caddr ff)) 0 1e-3))
(setq pt (list (/ g2 w) (/ (- g3) w) 0))))
(list (xty-acos (MAT:Dot abc def))
pt
(mapcar (function +) pt (MAT:vxs ff (distance pt pt1)))))
求出交线算角就不用写了
另一种算法,三维旋转
(defun tt(ang1 ang2 ang3 / xty-g-3ptang a b cmat1 mat2 mat3 pt0 pt1 pt12 pt2pt22 pt3 pt4)
(defunxty-G-3ptang(pt1 pto pt2 / a b c)
(setqa (MAT:v-v pto pt1)
b (MAT:v-v pto pt2)
ang (xty-acos (/ (MAT:dot a b)
(* (MAT:norm a) (MAT:norm b))))))
(setq ang1 (/ (* pi ang1) 180)
ang2 (/ (* pi (- 90 ang2)) 180)
ang3 (/ (* pi (- 90 ang3)) 180))
(setq pt0'(0 0 0)
pt1'(1. 0 0)
pt2'(0 0 1.)
mat1 (MAT:Rotation3D pt0 pt2 ang1)
pt3(MAT:mxp mat1 pt1)
mat2 (MAT:Rotation3D pt0 pt1 (- ang2))
pt12 (MAT:mxp mat2 pt2)
mat3 (MAT:Rotation3D pt0 pt3 ang3)
pt22 (MAT:mxp mat3 pt2)
a (xty-g-angf&f pt0 pt1 pt12 pt0 pt3 pt22)
pt4(caddr a)
b (xty-G-3ptang pt1 pt0 pt4)
c (xty-G-3ptang pt3 pt0 pt4))
(list (atof (angtos b 0 5)) (atof (angtos c 0 5))))
;;;(tt 60 20 35)=>(42.1044 23.566)
本帖最后由 lht 于 2025-3-22 11:19 编辑
这涉及到赤平投影了,两个面相交的那条线叫交割线,因两个面都不在同一平面,因此两个面的交割线也不是水平线,经赤平投影计算,此例交割线与左立面的水平夹角为40.34度,与右立面的水平夹角为19.66度,交割线呈下高上低(以示例图方位为准),与水平面的夹角为13.3度。 本帖最后由 mahuan1279 于 2025-3-21 16:14 编辑
解三角函数方程。如果换元的话,需要求解一元六次方程的根。 lht 发表于 2025-3-21 14:40
这涉及到赤平投影了,两个面相交的那条线叫交割线,因两个面都不在同一平面,因此两个面的交割线也不是水平 ...
图中红色面与青色面相交处2个角度是42度与24度,这是犀牛模型放样出来的,和你给的结果不一致。
能列出完整的公式吗? mahuan1279 发表于 2025-3-21 15:14
解三角函数方程。如果换元的话,需要求解一元六次方程的根。
能列出完整的公式吗?? 本帖最后由 mahuan1279 于 2025-3-21 17:15 编辑
hn10183051 发表于 2025-3-21 16:28
能列出完整的公式吗??
Q1,Q2数值解应该不难。
mahuan1279 发表于 2025-3-21 17:11
Q1,Q2数值解应该不难。
试试,看看结果对不对 夏生生 发表于 2025-3-21 17:14
如果知道面上的点可以用下面的方法
求出交线算角就不用写了
只知道3个角度。 hn10183051 发表于 2025-3-21 18:58
试试,看看结果对不对
最终可转化为一元四次方程。