已知总长和两个圆弧的半径,求中心距
经常有这样的需求,如下图所示,知道两段弧的半径,也知道总长,但是中心距不知道,只能一点点画着试,能不能有一个程序或者宏,可能很简单的计算出来。
各位大佬,能不能写个程序或者在EXCE里搞个宏程序。
本帖最后由 llsheng_73 于 2025-1-7 13:44 编辑
mahuan1279 发表于 2025-1-7 11:17
数值计算,二分法,牛顿法……
感谢详细的图解
(defun tt(l r1 r2 / d l1 len)
(defun len(d r1 r2 / a)
(setq a(/(- r1 r2)d)
a(angle'(0 0)(list a(sqrt(- 1(* a a))))))
(+(* r1(- pi a)2)(*(sin a)d 2)(* r2 2 a)))
(setq d(+ r1 r2))
(while(not(equal(setq l1(len d r1 r2))l 1e-8))
(setq d(+(*(- l l1)0.5)d))))
(rtos(TT 3650 315 75)2 8)=>"1188.06486864"
通过设置全局变量(setq i 0),在while内增加(setq i(1+ i))检查,3650 315 75这一组数据运行至结束仅循环7次 ;; 暴力求解法
(defun abc (r1 r2 ll jd / dd dr hc1 hc2 l1 rad)
"(abc 315 75 3650 1e-4)"
(defun acos (a) (atan (/ (sqrt (- 1 (* a a))) a)))
(setq dr(- r1 r2)
dd(* ll 0.5)
l1(* (sqrt (- (* dd dd) (* dr dr))) 2)
rad (acos (/ dr dd))
hc1 (* r1 (- (* pi 2) rad rad))
hc2 (* r2 rad 2)
)
(while (> (+ l1 hc1 hc2) ll)
(setq dd(- dd jd)
l1(* (sqrt (- (* dd dd) (* dr dr))) 2)
rad (acos (/ dr dd))
hc1 (* r1 (- (* pi 2) rad rad))
hc2 (* r2 rad 2)
)
)
(rtos dd 2 4) ;1188.0648
)
(defun llhz (r1 r2 leng jd / dd dr hc1 hc2 l1 rad tt acos)
"llhz 链轮护罩 (llhz r1大圆半径 r2小圆半径 leng链轮长度 jd步差)"
"(llhz 315 75 3650 1e-4) → 1188.0648"
(defun acos (a) (atan (/ (sqrt (- 1 (* a a))) a)))
(defun tt (r1 r2 dd jd / dr l1 rad h1 h2)
(setq dr(- r1 r2)
l1(* (sqrt (- (* dd dd) (* dr dr))) 2)
rad (acos (/ dr dd))
h1(* r1 (- (* pi 2) rad rad))
h2(* r2 rad 2)
)
(+ l1 h1 h2)
)
(setq dd (* leng 0.5))
(while (> (tt r1 r2 dd jd) leng)
(setq dd (- dd jd))
)
(rtos dd 2 4)
) 论坛长老----注册时间2008-5-30 链轮护罩,皮带轮护罩 自贡黄明儒 发表于 2025-1-6 20:02
链轮护罩,皮带轮护罩
对的,已知两个皮带轮,皮带总长,求解中心距{:1_1:} 好象最主要的问题就是计算一个圆心角 xyp1964 发表于 2025-1-6 22:07
;; 暴力求解法
版主太厉害了,又在明经取到了真经!!! 院长的数学功底 太好了,望尘莫及 本帖最后由 cable2004 于 2025-1-7 11:24 编辑
两段圆弧中心之间的距离 d 是:1188.064869L 是:3650.000000
数值计算,二分法,牛顿法……
页:
[1]
2