QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

楼主: geng75
收起左侧

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

[复制链接]
发表于 2009-6-22 19:27:57 | 显示全部楼层 来自: 中国江苏南通
设弧高h,弧长l,半径为r. 那么这段弧对应的夹角弧度为d=l/r. 4 u' ~% _& O6 V# c1 m+ G
由简单的计算可知: 1-h/r=cos(d/2)
' m5 |, n4 E" O所以由倍角公式得,   y) \; D6 N1 ~+ U0 s4 h% R
cos d= 2(1-h/r)^2-1=1-4h/r+2h^2/r^2. M, a& T6 i% h! t1 B; n: J
又因 d=l/r, A3 t" n$ ^4 N% P4 i7 C" C
故得方程:cos(l/r)=1-4h/r+2h^2/r^2
$ t+ G4 [4 p. S; G# }. e当然,这是超越方程,没法求精确解。所以我们只好退而求其次,求它的近似解。
' @% q4 L% L6 {& ~' V1 M* ~考虑cosx的幂级数展开:- s& A  S" M- b- b+ z
cosx=1-1/2*x^2+1/24*x^4-1/720*x^6+...
# S( [# }( `0 W: o于是上述方程在1阶精度上近似等于:. m: Z9 G- Q) C1 E1 x8 V" o
4(h/l)+(2(h/l)^2-1/2)*(l/r)=0
' U: e8 b. p$ k5 W8 X) {从而r=(l/8)*((l/h)^2-4)
2 }- y! z! K, x9 e) b, E当然,如果你想得到更精确的计算值,也可以用牛顿迭代法。这里就不展开了。你可以去看任何一本讲《数值计算》的书。

评分

参与人数 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
/ I$ \% L$ x0 u! V( f2 M/ R设弧高h,弧长l,半径为r. 那么这段弧对应的夹角弧度为d=l/r. 3 j* \. w% t8 g: s& l* Y! d  b
由简单的计算可知: 1-h/r=cos(d/2)
8 c# b% ^% ], B, Z% Q% _+ y所以由倍角公式得,
, G7 c3 ^" r; o& C* u( scos d= 2(1-h/r)^2-1=1-4h/r+2h^2/r^2- J# M& {4 J# H8 C$ D) J
又因 d=l/r: U% {4 m0 j( ], g4 |, U
故得方程:cos(l/r)=1-4h/r+2h^2/r^2% K6 g$ b, T* Q. x" [/ l1 r
...

3 L  m/ Q. g7 N6 M( P
1 T, m$ x+ _% c$ \, V( o8 n0 r楼上用泰勒展开式近似计算是个办法,在Excel中用迭代得到数值用在cad中,下面这个式子的精度就足够了:
- J; t4 b- V  I% Q  P3 x& G6 Z7 G9 O1 m0 Z
!jd.gif

评分

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

查看全部评分

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

回复 21# j422 的帖子

用EXL的方法求解是不得已的事,因下列原因,一直未能推广。: J  W# J& Y9 v: X! W6 K8 H

2 t4 |* B4 P( e1.很明确了,无解。要有解必须是400.000000009.) a( ~) W, y* \. }- d+ \5 y
为什么?因为这个565.497是EXL用无限趋近的方法求得的)。7 m+ ?, M# \8 U  x

9 p+ s6 v  @. O2.变量求解不是用在这种情况下,因为我们的R是未知的,它无法用具体数值先去表示。变量求解其实是个暴力求解法。如MD5解密一样,首先要有可以对照的数字。
6 `0 k  m# [$ J+ Y& U4 m6 p. z, p: a# Q  @
所以,要求这个R值,我们必先假定一个R值,而这个R值如果假定得离所求弧长400越接近,那么单变量求出的R值就越近似,精度就越高。# D- b8 r" h" G( j* `
8 l. ?/ J# c2 r  ~
好比:我假设这个R值为565,然后让EXL或MD5去暴力穷解,当解到接近弧长为400这个数值时,非标答案就产生了:R=565.4981,弧长L=400.0003909,! t$ _/ r5 G/ e0 {7 q* t
% ~5 P8 L# F$ s9 C  j+ ?
综上所述,这是个凑答案的方法,是无法正确求得精确解的。
1 _5 j6 o8 Z) ~. p+ D' m3 P# g8 P5 U& N" u& ], G# M, f. }
但是,有一点可以肯定的是:只用这两个条件只能是近似的求解。无法求出精度为0的值。
7 \1 p% `# b9 g7 A0 X' k0 Y* s
1 Y/ j7 q. G( O5 V1 u# w0 b7 O1 j这个方法

评分

参与人数 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$ c( {; ~! V1 w5 }3 z
用EXL的方法求解是不得已的事,因下列原因,一直未能推广。, F& V( z. w+ S$ H9 e
2 B* E) v9 }: a) k9 N9 \# a+ q* ~
1.很明确了,无解。要有解必须是400.000000009.
4 U2 k" C0 c+ s+ p& T6 u! r为什么?因为这个565.497是EXL用无限趋近的方法求得的)。
, z$ k. V" u. F% F! ~% g: _9 _* L4 M" E3 m
2.变量求解不是用在这种情况下,因为我们 ...
$ o- B3 q7 J' J6 {" }, R
$ q3 h7 c% k+ r, A& a' Z$ N" l0 L
显示可以精确解到400,精度可设到小数点后30位.
已知弧长L,弧高H。怎么求圆的半径R.JPG

评分

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

查看全部评分

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

评分

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

查看全部评分

发表于 2009-6-23 14:14:39 | 显示全部楼层 来自: 中国江苏无锡
这个问题看见好几次了。呵呵,我也在贴一次,模拟拉伸逼近。
4 n/ u" B1 G& Z上次看成弧长弦长了,现在搞好了~~! b- q; U# F) F8 z1 G6 X; b) e  Q. F2 A
(defun c:aaa()
7 k* @) R) r0 h8 Q  (setq L1 (getreal "弧L1="))+ a4 D. W: \7 @  J5 Z
  (setq L2 (getreal "弦高L2="))
1 ^$ ~6 j" U3 g/ Y. A; L$ r  (setq PT1 (list 0 L2))- H2 G& @  p: O" X; W1 S1 m. a
  (setq Ln (/ L1 2))
) |! ]# z+ k& \: `  (setq jd (/ L2 50))
$ P$ j) s6 b6 d- ~, N% J/ d* o! Q- w& k  (setq Lxx (+ L1 100))
4 S. a: E5 Y- i# U! D4 X  \ (while ( or (> Lxx L1)
' @4 c; r% ?7 b: q8 R             (< Ln 0.1)" o6 t/ h, \; \" W4 y  Z" A* P
        )+ C) R4 B4 s8 W
  (setq PT2 (list (- 0 Ln) 0))% o- m) ^$ X! Z  |6 s7 R
  (setq PT3 (list Ln 0))- {( q! T/ ]8 Y' P9 o; z$ d4 Y
  (command "arc" "none" PT2 "none" PT1 "none" PT3)
$ J$ U- }# X3 a2 U+ W) M4 t  (command "lengthen" (entlast) "")
! X2 U) ]" @% I+ o: l7 {  (setq Lxx (getvar "perimeter"))
7 Z6 }7 l# b, P" s" A' Q; R( p9 h7 h  (setq Ln (- Ln jd))
  n. k- N+ e. }' k1 y  (command "ERASE" (entlast) "")/ t& ?" y1 `- r6 n# |
)$ q& e+ }% o4 m8 I9 }
;;;------------------
0 J5 n8 `- a8 p( }7 r8 B(setq i 10)
+ Z2 o6 t5 t. ?(repeat i
% w; h# D8 ?3 p! {' N5 l (setq Ln (+ Ln (* 2 jd)))) B3 |. p+ `3 W
(setq jd (/ jd 10))
3 h1 @( y$ c: L: U0 R& }9 \: N4 ?$ @; N9 F7 w (setq Lxx (+ L1 100))
7 K& P9 Z* ^  J( P, \ (while ( or (> Lxx L1)7 [' \$ \, [/ U/ O
             (< Ln 0.1)5 D8 F9 {$ ^4 Z' c, W* J
        )$ w2 Y( @( z- K1 F1 ]
  (setq PT2 (list (- 0 Ln) 0))
3 F8 r! ~$ S4 Z) ^4 \( {- n1 K  (setq PT3 (list Ln 0)). r% ]3 D7 n: o- O* L2 d
  (command "arc" "none" PT2 "none" PT1 "none" PT3)7 \$ I3 t8 ]& o! x& @
  (command "lengthen" (entlast) "")
7 ]8 ]3 O5 ~; T& n& Y! r) d/ a  (setq Lxx (getvar "perimeter"))
- w0 C0 ?; E  e+ b8 f+ ]4 b/ z1 E  (setq Ln (- Ln jd))
  N# C1 {! c3 \( L' n/ i  (command "ERASE" (entlast) "")8 ]' l. q+ }( d3 j0 `2 \' A8 c
)4 Y0 a9 {) E( e( F) C! B& k5 w1 U& G
)
7 c* N' }! e$ S& k4 c" `+ ?
: a0 `0 P* j) ]. `2 z7 z/ f;;;------------------
" M! s8 K) z/ D  l (setq Ln (+ Ln (* 2 jd)))
# C* _4 F0 ?$ w: ~/ d (setq jd (/ jd 50))
8 |6 o& y  o! ?) T (setq Lxx (+ L1 100))
0 f3 X: w# ~1 Q! M (while ( or (> Lxx L1)
1 A  `* m% H$ H3 z0 }             (< Ln 0.1)# @7 j- W) ^" k* |. j2 u$ ]
        )
- a3 c$ I5 j! W* @, H3 w2 p. h) ~  (setq PT2 (list (- 0 Ln) 0))
% ~% G1 Y8 g9 e& X- g  (setq PT3 (list Ln 0))
6 W. e3 F2 k* |3 B# @1 z  (command "arc" PT2 PT1 PT3)
* w( h! o- I( O" z  (command "lengthen" (entlast) "")
/ C' Q! }7 K8 c7 r  (setq Lxx (getvar "perimeter"))
3 N5 a& u' s. j8 t  (setq Ln (- Ln jd))) Q4 G* w$ I1 z6 S# L! ?5 C: b, X
     (if  ( or (> Lxx L1)% }) C, ]2 Y# y- \) J$ W7 f! a
             (< Ln 0.1)
) d& V3 n3 _; r( X& @$ `% x/ h$ _, n          )
, b( o3 K# x. H1 P  T9 X3 l          (command "ERASE" (entlast) "")
+ U4 i9 ~) b' s9 Q, f6 |# o7 J+ F  d          ()- K  c" x! i. p7 r9 ~2 H; I9 _/ ^" V' u' X
      )/ u' H$ s0 r2 g, @
)
" L# ?$ D) {2 }+ s1 I# R1 T' D' p6 l);(defun) D$ C" P; m# z" P8 V

& F+ D" c$ Y2 f[ 本帖最后由 www1974 于 2009-6-24 14:13 编辑 ]

评分

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

查看全部评分

发表于 2009-6-26 18:00:00 | 显示全部楼层 来自: 中国上海
R=H/1-cos(180°L/2πR)
; h; i1 r- S1 q( _3 W2 [4 q# ]再计算出来就可以,这是我自己计算出的公式,麻烦了点
发表于 2009-7-29 08:35:49 | 显示全部楼层 来自: 中国湖北十堰
公式为:H=L^2/(8*R)
; e" k; s/ @9 [2 i1 E6 LH----弧高
8 p4 X, |: d% M4 r  c0 H- KL---弧长8 l' _5 x9 d' `
R---曲率半径
% V# `6 W$ L) L请各位自行验算一下哦!!100%正确哦!!: G" U/ z3 ^3 J" m& L, q5 c5 [
( W! k5 I3 Q; O/ U5 x: o  f
[ 本帖最后由 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.gif8 `5 G( g3 X2 [
已知弧长L,弧高H。怎么求圆的半径R?
9 O! t1 u# Z+ S. r: k7 {
看来楼主想用六米长的水管做蔬菜大棚
3 k, s6 H% L4 l/ F; s' O0 s已知弧长,设定玄长与玄高即可按下面口诀近似算出R值' D1 D' G1 n) {# ^' O
+ U5 x$ M$ K: m* i8 h$ u( t
半玄乘半玄除以高再加高(得出的为近似直径), m0 @' l3 A, u' B  v
8-2-1.jpg + [4 G7 @2 V% R) n& c! P- {5 Y
9 m/ C4 }/ l/ ]. |. Y9 F0 t
8-2-2.jpg
6 r3 b& d7 p/ w
" x% B( X) m  f, z[ 本帖最后由 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 )

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