QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

楼主: geng75
收起左侧

[讨论] 已知弧长L,弧高H。怎么求圆的半径R?

[复制链接]
发表于 2009-6-20 11:00:51 | 显示全部楼层 来自: 中国江苏苏州

回复 12# zhangzhener 的帖子

这个是比较快的,你这个方法也行,其实初中的几何课本上就有在一条弧上做两个玄,做两个玄的垂直平分线,平分线的焦点就是圆弧的圆心,从圆心道弧上任意一点就是弧的半径长。
发表于 2009-6-22 19:27:57 | 显示全部楼层 来自: 中国江苏南通
设弧高h,弧长l,半径为r. 那么这段弧对应的夹角弧度为d=l/r. ) ~+ ]8 p( j& U4 B' X, ?5 A
由简单的计算可知: 1-h/r=cos(d/2)/ Q7 q1 y* O. A. K2 z. p+ e7 g0 T6 M
所以由倍角公式得, $ F& ^, C3 @6 R" ^3 R$ V8 ]6 L4 F% Q
cos d= 2(1-h/r)^2-1=1-4h/r+2h^2/r^2) C) g: x0 X' Y5 z
又因 d=l/r
& Q1 ^: [  W; a. K$ E2 b0 I, }8 X4 ]故得方程:cos(l/r)=1-4h/r+2h^2/r^29 x7 o+ w% k% D1 E0 U& T* ?
当然,这是超越方程,没法求精确解。所以我们只好退而求其次,求它的近似解。& B/ T5 X+ x; t' L
考虑cosx的幂级数展开:' r! @! R4 m2 D% Y; S; T
cosx=1-1/2*x^2+1/24*x^4-1/720*x^6+...8 j5 B' n/ d8 T  h2 z$ k
于是上述方程在1阶精度上近似等于:
1 A" L  U" ]# i1 z) P- |4(h/l)+(2(h/l)^2-1/2)*(l/r)=0
& O0 f$ d( ]  b6 d9 f0 ^从而r=(l/8)*((l/h)^2-4)
6 @6 f3 P, {$ \+ o0 x3 e5 ^6 s. l当然,如果你想得到更精确的计算值,也可以用牛顿迭代法。这里就不展开了。你可以去看任何一本讲《数值计算》的书。

评分

参与人数 1三维币 +5 收起 理由
2005llnn + 5 技术讨论

查看全部评分

发表于 2009-6-22 21:02:25 | 显示全部楼层 来自: 中国广东佛山
原帖由 rgyzgwh 于 2009-6-22 19:27 发表 http://www.3dportal.cn/discuz/images/common/back.gif# |! w1 B8 P) @- r) Y
设弧高h,弧长l,半径为r. 那么这段弧对应的夹角弧度为d=l/r. 3 s7 @$ u6 r2 f! ^
由简单的计算可知: 1-h/r=cos(d/2)7 Y) [) H) g+ U. V! k1 R! P
所以由倍角公式得, 8 `7 d/ }) ^; E' z) F
cos d= 2(1-h/r)^2-1=1-4h/r+2h^2/r^21 s8 E1 J4 N+ j( K
又因 d=l/r7 }' {8 p5 x1 s8 z" v
故得方程:cos(l/r)=1-4h/r+2h^2/r^2
1 l9 j% [" @1 j! v* g% `$ J...

- Q& ?" U$ H1 M' x3 k* f) n
" m5 d. N( U: C# L# P楼上用泰勒展开式近似计算是个办法,在Excel中用迭代得到数值用在cad中,下面这个式子的精度就足够了:
1 H: {8 T) Y, l2 \! I4 Y3 z- D2 c( `; g
!jd.gif

评分

参与人数 1三维币 +5 收起 理由
2005llnn + 5 技术讨论

查看全部评分

发表于 2009-6-22 21:09:14 | 显示全部楼层 来自: 中国浙江金华

回复 21# j422 的帖子

用EXL的方法求解是不得已的事,因下列原因,一直未能推广。* a% V4 u- u  Z9 `5 |
: |6 i7 d' a# r! j: i9 l8 }
1.很明确了,无解。要有解必须是400.000000009.% ~1 b" Q7 ?5 }6 S) Y) s) _
为什么?因为这个565.497是EXL用无限趋近的方法求得的)。
5 x8 W! f- ?9 M" F0 `" c9 i5 c( v& J- F' r2 W& i. H
2.变量求解不是用在这种情况下,因为我们的R是未知的,它无法用具体数值先去表示。变量求解其实是个暴力求解法。如MD5解密一样,首先要有可以对照的数字。
7 s* j" B9 S" q& S: c7 d. M/ @$ g4 W% F' J6 o; b4 j0 V
所以,要求这个R值,我们必先假定一个R值,而这个R值如果假定得离所求弧长400越接近,那么单变量求出的R值就越近似,精度就越高。! z* x* C5 Y# }$ t
3 v3 k* [: B4 f7 {$ b0 b/ h
好比:我假设这个R值为565,然后让EXL或MD5去暴力穷解,当解到接近弧长为400这个数值时,非标答案就产生了:R=565.4981,弧长L=400.0003909,8 N7 f, q- v( I4 ?* J* ?& {5 g2 D
0 U" \' B& A2 A
综上所述,这是个凑答案的方法,是无法正确求得精确解的。
& d' C0 z1 ]  a; N' n0 ]6 S, M. W
但是,有一点可以肯定的是:只用这两个条件只能是近似的求解。无法求出精度为0的值。
0 E. ]  ^6 N9 O! n7 X  u: Q8 C) s* E) W3 Y8 Z0 r/ k1 D( a
这个方法

评分

参与人数 1三维币 +5 收起 理由
2005llnn + 5 技术讨论

查看全部评分

发表于 2009-6-22 22:48:39 | 显示全部楼层 来自: 中国江苏苏州
原帖由 czy12 于 2009-6-22 21:09 发表 http://www.3dportal.cn/discuz/images/common/back.gif- \" X- N; J6 S5 l
用EXL的方法求解是不得已的事,因下列原因,一直未能推广。- u! P% N% r, t& o
2 Q' G6 [* I  P0 M% ~3 o0 x  `
1.很明确了,无解。要有解必须是400.000000009.2 k" Q" c  l5 K! l" I
为什么?因为这个565.497是EXL用无限趋近的方法求得的)。: c9 O& B* ~) h/ B$ ]

$ l, I1 {0 W6 W; i- A' i; h& R9 R2.变量求解不是用在这种情况下,因为我们 ...

% k" z& w. T+ F; G2 U2 _, n* Y  U6 L1 m7 W, k
显示可以精确解到400,精度可设到小数点后30位.
已知弧长L,弧高H。怎么求圆的半径R.JPG

评分

参与人数 1三维币 +5 收起 理由
2005llnn + 5 技术讨论

查看全部评分

发表于 2009-6-23 13:53:15 | 显示全部楼层 来自: 中国广西崇左
采用一种新方法“精确选点法”解CAD难题就比较简单,/ n) O* y- d+ P% V
下面动画演示只是精度为小数点后四位,如果要更加精确的,可以通过放大图形来作图。
090623.gif

评分

参与人数 1三维币 +5 收起 理由
woaishuijia + 5 技术讨论

查看全部评分

发表于 2009-6-23 14:14:39 | 显示全部楼层 来自: 中国江苏无锡
这个问题看见好几次了。呵呵,我也在贴一次,模拟拉伸逼近。9 |9 m6 a- l9 C. {3 k: _6 M  S
上次看成弧长弦长了,现在搞好了~~
1 p: \. x0 {# p0 P7 J* t(defun c:aaa()/ y/ x/ L; |$ e* |8 n
  (setq L1 (getreal "弧L1=")), o; x4 f& m( B4 }% g
  (setq L2 (getreal "弦高L2="))
/ ^8 V) S6 P, v1 y  {/ s& @7 z: }  (setq PT1 (list 0 L2))
# o" {/ R1 w! }+ M: s  (setq Ln (/ L1 2))
9 a, L, ~% F3 }7 G( S( P  (setq jd (/ L2 50))) l1 x: }1 O) X( T7 b) J2 n  M8 B- c" u
  (setq Lxx (+ L1 100))
8 [* C% S, l4 O+ u7 i9 j (while ( or (> Lxx L1)
. J; x2 i, H* R' ^             (< Ln 0.1)
& a) b& J% G$ n& {, J        )1 q0 W" h4 `; @" \0 o& b
  (setq PT2 (list (- 0 Ln) 0))
" s7 G5 r' l' v: R# I  (setq PT3 (list Ln 0))# i% @4 `2 X) y  E
  (command "arc" "none" PT2 "none" PT1 "none" PT3)& p" ^  W% ?: a0 z2 G5 ], u0 |, `# K
  (command "lengthen" (entlast) "")$ h& v; ?* @# t
  (setq Lxx (getvar "perimeter"))
* H* u8 X8 I) w# F  (setq Ln (- Ln jd))
& A- A7 Z, Q& L# }5 j  (command "ERASE" (entlast) "")  c# q$ _, q5 Y5 l
)/ G4 w7 r7 i. c5 `7 Q' H
;;;------------------
* [# N) d  P. w' z(setq i 10)
8 W( F; ^8 r! m( `(repeat i
. T8 O5 u) e8 Y (setq Ln (+ Ln (* 2 jd)))7 I, N( A1 l5 h' A* o
(setq jd (/ jd 10))
1 ~3 n' }) T4 g. P; [% }& C# i2 T (setq Lxx (+ L1 100))
* v- V8 r% v, f1 g( o2 f9 Q (while ( or (> Lxx L1)- d. L2 _7 }! F0 s' n8 h
             (< Ln 0.1)
( [( \4 @! V5 y9 ~4 }! \& _        ): a( p( o* E8 B; Z; ~0 _
  (setq PT2 (list (- 0 Ln) 0))  }+ p+ R+ M1 K& g
  (setq PT3 (list Ln 0))
% b) ~4 P) ]8 p' S1 e  (command "arc" "none" PT2 "none" PT1 "none" PT3)
8 B) k' {$ G2 X$ }) t  (command "lengthen" (entlast) "")7 t$ O: B5 @: d. t" ~: Y" ]
  (setq Lxx (getvar "perimeter"))
" U% N6 `" `2 L7 [& i' L0 F- S  (setq Ln (- Ln jd)) 8 L4 E. e7 G3 C% p+ s7 U
  (command "ERASE" (entlast) "")
" h) ?: m6 n% `7 A1 ^. T8 y )
  I& x% G; G/ E  J)
" A2 p! O  K' K  u5 Q  u# C; ]. k4 x9 e
;;;------------------$ E5 }. _# M" N0 M5 i
(setq Ln (+ Ln (* 2 jd)))
5 ]. e$ g7 ~" [9 T (setq jd (/ jd 50))/ L) ]6 S4 Q( j; e- v% o# X0 A
(setq Lxx (+ L1 100))
( w: C1 k6 l5 N! O8 N, ^  b (while ( or (> Lxx L1)" a( [+ V0 n/ i; E
             (< Ln 0.1)
0 J' }; B& ]8 A1 `9 [4 M        )
+ p% i( J( h* p6 K6 N9 x' \/ G1 s  (setq PT2 (list (- 0 Ln) 0))
0 J9 E: {# Q; {1 ^! t' w( a0 q9 A  (setq PT3 (list Ln 0))+ E( F& Z: |% C1 }/ o. Y
  (command "arc" PT2 PT1 PT3)6 [5 M# Q9 M2 d0 @4 U& S# U( P$ M
  (command "lengthen" (entlast) "")/ r! C" w, X; q0 j9 |" V
  (setq Lxx (getvar "perimeter"))
: f) C  N/ V/ w1 s( H  (setq Ln (- Ln jd)); U( v, b' L0 P  H; u4 K. R- G
     (if  ( or (> Lxx L1)) a7 {" t# D' Q( u
             (< Ln 0.1)2 v8 `7 r, X! B
          )
/ k. \- Q3 i% d6 K% K          (command "ERASE" (entlast) "")) ]. I* x: [& Y, U
          ()
0 K: q. j- o$ B; m  E* {      )1 g6 I  h! C* P
)
8 B8 c4 ]& b# @) Z' S/ @);(defun+ F. E& H; w% @- V/ K) N% G
8 `% B/ X: u3 r: c/ ]
[ 本帖最后由 www1974 于 2009-6-24 14:13 编辑 ]

评分

参与人数 1三维币 +10 收起 理由
woaishuijia + 10 技术讨论

查看全部评分

发表于 2009-6-26 18:00:00 | 显示全部楼层 来自: 中国上海
R=H/1-cos(180°L/2πR)
+ Y; ~9 F5 Z( ?! P0 X再计算出来就可以,这是我自己计算出的公式,麻烦了点
发表于 2009-7-29 08:35:49 | 显示全部楼层 来自: 中国湖北十堰
公式为:H=L^2/(8*R)0 ~) {' R$ N9 r) P
H----弧高& _* b) ~) ^1 D7 Z& ^
L---弧长
3 d0 o$ L% F% D! U/ JR---曲率半径" P% y' K% B$ I& E9 W! H
请各位自行验算一下哦!!100%正确哦!!
% P: o  n1 n- w8 i/ |  H* ?1 ?" V8 S0 }% }5 O5 K4 a
[ 本帖最后由 shhch_555 于 2009-7-29 15:42 编辑 ]
发表于 2009-7-31 21:24:11 | 显示全部楼层 来自: 中国上海
好多强人,学习中
发表于 2009-8-2 11:36:17 | 显示全部楼层 来自: 中国浙江温州
原帖由 geng75 于 2009-5-12 13:40 发表 http://www.3dportal.cn/discuz/images/common/back.gif
) R, f3 [/ {' S# `9 ^2 V已知弧长L,弧高H。怎么求圆的半径R?
; {" m. w1 G% }( V
看来楼主想用六米长的水管做蔬菜大棚( `( c4 ?) J* }. ^
已知弧长,设定玄长与玄高即可按下面口诀近似算出R值4 k1 z8 j; Y% }  J& `

4 }& p$ V% [; T8 U0 L* ]) q: [半玄乘半玄除以高再加高(得出的为近似直径)
# g& C% {5 l9 w+ ` 8-2-1.jpg 8 M4 M) {) Y4 h; T4 u% X

$ k/ Z% j9 R" l8 }5 d$ ` 8-2-2.jpg % `5 O* @" z; b; k+ i( L2 G
& F5 O& \7 C6 r" n* k9 M/ m2 {4 u! f! y
[ 本帖最后由 wtongong 于 2009-8-2 11:43 编辑 ]

评分

参与人数 1三维币 +5 收起 理由
2005llnn + 5 技术讨论

查看全部评分

发表于 2009-8-7 11:28:24 | 显示全部楼层 来自: 中国重庆
看来这么多介绍,我觉得用EXCEL方法更易于掌握一些,谢谢大家
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表