hn10183051 发表于 2025-3-21 12:16:28

求【高飞鸟】大师与各位大神帮忙解答一个数学题,求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 14:59:48

本帖最后由 夏生生 于 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)))))

夏生生 发表于 2025-3-21 17:14:04

如果知道面上的点可以用下面的方法
;;;=============================================
;;;      通用函数两个面夹角及交线
;;;参数: 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)))))
求出交线算角就不用写了

夏生生 发表于 2025-4-14 16:53:22

另一种算法,三维旋转
(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-21 14:40:00

本帖最后由 lht 于 2025-3-22 11:19 编辑

这涉及到赤平投影了,两个面相交的那条线叫交割线,因两个面都不在同一平面,因此两个面的交割线也不是水平线,经赤平投影计算,此例交割线与左立面的水平夹角为40.34度,与右立面的水平夹角为19.66度,交割线呈下高上低(以示例图方位为准),与水平面的夹角为13.3度。

mahuan1279 发表于 2025-3-21 15:14:27

本帖最后由 mahuan1279 于 2025-3-21 16:14 编辑

解三角函数方程。如果换元的话,需要求解一元六次方程的根。

hn10183051 发表于 2025-3-21 16:27:14

lht 发表于 2025-3-21 14:40
这涉及到赤平投影了,两个面相交的那条线叫交割线,因两个面都不在同一平面,因此两个面的交割线也不是水平 ...

图中红色面与青色面相交处2个角度是42度与24度,这是犀牛模型放样出来的,和你给的结果不一致。
能列出完整的公式吗?

hn10183051 发表于 2025-3-21 16:28:32

mahuan1279 发表于 2025-3-21 15:14
解三角函数方程。如果换元的话,需要求解一元六次方程的根。

能列出完整的公式吗??

mahuan1279 发表于 2025-3-21 17:11:55

本帖最后由 mahuan1279 于 2025-3-21 17:15 编辑

hn10183051 发表于 2025-3-21 16:28
能列出完整的公式吗??
Q1,Q2数值解应该不难。

hn10183051 发表于 2025-3-21 18:58:57

mahuan1279 发表于 2025-3-21 17:11
Q1,Q2数值解应该不难。

试试,看看结果对不对

hn10183051 发表于 2025-3-21 19:00:39

夏生生 发表于 2025-3-21 17:14
如果知道面上的点可以用下面的方法

求出交线算角就不用写了

只知道3个角度。

mahuan1279 发表于 2025-3-21 19:56:56

hn10183051 发表于 2025-3-21 18:58
试试,看看结果对不对

最终可转化为一元四次方程。
页: [1] 2 3 4
查看完整版本: 求【高飞鸟】大师与各位大神帮忙解答一个数学题,求2个面相交的真实角度。