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. + j1 Y  @% m- Q- x+ }0 s
由简单的计算可知: 1-h/r=cos(d/2). b/ {! H7 t1 M; y6 S7 l1 t
所以由倍角公式得,   w9 ?9 b' `2 B3 Q! k, g
cos d= 2(1-h/r)^2-1=1-4h/r+2h^2/r^2
0 N$ J# e+ p+ L5 F+ p, l( |4 @6 ]又因 d=l/r
* u3 W% ~  _! ?  d# ~  S7 s故得方程:cos(l/r)=1-4h/r+2h^2/r^2
5 i9 ^$ d1 |. }( R当然,这是超越方程,没法求精确解。所以我们只好退而求其次,求它的近似解。- U' A+ |  P. {  O$ V
考虑cosx的幂级数展开:
3 |+ B+ n' w, k, @) q( vcosx=1-1/2*x^2+1/24*x^4-1/720*x^6+...
2 s; Z! h0 o8 I3 S6 m/ _- I于是上述方程在1阶精度上近似等于:4 v8 w) ]+ K0 \; q$ z
4(h/l)+(2(h/l)^2-1/2)*(l/r)=0/ q' z. ~8 c2 O
从而r=(l/8)*((l/h)^2-4)( E8 Q/ O! e/ n$ t! W5 d
当然,如果你想得到更精确的计算值,也可以用牛顿迭代法。这里就不展开了。你可以去看任何一本讲《数值计算》的书。

评分

参与人数 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
0 J2 L- ?& u/ m# b5 P设弧高h,弧长l,半径为r. 那么这段弧对应的夹角弧度为d=l/r.
% F% u$ w! I* z: w& }由简单的计算可知: 1-h/r=cos(d/2)
7 ?* D9 Q9 N  `6 Q4 ?. R+ s" ~所以由倍角公式得, 6 Z1 E& A% i! {! [* d
cos d= 2(1-h/r)^2-1=1-4h/r+2h^2/r^2
  P  p1 W7 C( u! ?0 l% t8 I又因 d=l/r
1 G! U8 C( ~- U# M; M9 i故得方程:cos(l/r)=1-4h/r+2h^2/r^20 S+ C( k# l% u; j
...
4 x: \9 |) h9 r$ u( ]
3 A. b  s: [5 C8 |
楼上用泰勒展开式近似计算是个办法,在Excel中用迭代得到数值用在cad中,下面这个式子的精度就足够了:
& {) R" B  t. m. i
6 x+ E2 a: D* K5 Q !jd.gif

评分

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

查看全部评分

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

回复 21# j422 的帖子

用EXL的方法求解是不得已的事,因下列原因,一直未能推广。( j4 Y( I, F8 w4 l% Z- V* \
& E- W7 o5 S$ E# ~0 `# u3 C
1.很明确了,无解。要有解必须是400.000000009.  U# H' ^, r6 [  a8 C
为什么?因为这个565.497是EXL用无限趋近的方法求得的)。
. i- ?+ i0 w' @8 ~: t- d% I. l4 |
2.变量求解不是用在这种情况下,因为我们的R是未知的,它无法用具体数值先去表示。变量求解其实是个暴力求解法。如MD5解密一样,首先要有可以对照的数字。, A2 V! i( S+ N' U) ]( A

3 P# S0 M$ O/ o& C: V; n' x4 f所以,要求这个R值,我们必先假定一个R值,而这个R值如果假定得离所求弧长400越接近,那么单变量求出的R值就越近似,精度就越高。* k" Z: _, ~/ {1 \: w

3 [3 w4 N# ]. V. `0 l/ w好比:我假设这个R值为565,然后让EXL或MD5去暴力穷解,当解到接近弧长为400这个数值时,非标答案就产生了:R=565.4981,弧长L=400.0003909,+ n% V2 @0 [9 w, l9 O/ m

) z% r, C/ ~  ~* j综上所述,这是个凑答案的方法,是无法正确求得精确解的。9 C  ]! s' M: |# w, y5 v* F( v

* X  k6 B  h. r' C2 }但是,有一点可以肯定的是:只用这两个条件只能是近似的求解。无法求出精度为0的值。
7 J8 ?* \  j& k! ?3 b, W
, Z8 d- {/ h* I" f1 O这个方法

评分

参与人数 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) `8 M/ _& ^+ w: y, D& S
用EXL的方法求解是不得已的事,因下列原因,一直未能推广。* Z" q# c; Y$ R& h! _! I! @

; C+ n1 P7 ^$ I7 t# C1 k. y1.很明确了,无解。要有解必须是400.000000009.% s5 o- T! d) l! `( H  }/ H6 l. w. f
为什么?因为这个565.497是EXL用无限趋近的方法求得的)。# K' S$ y6 x1 C* B  F

( O; V6 Y2 `3 `, q4 n2.变量求解不是用在这种情况下,因为我们 ...
4 x: U5 e+ w; [8 P* `; }- A3 p$ j
9 f( c, F0 {5 u6 Y
显示可以精确解到400,精度可设到小数点后30位.
已知弧长L,弧高H。怎么求圆的半径R.JPG

评分

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

查看全部评分

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

评分

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

查看全部评分

发表于 2009-6-23 14:14:39 | 显示全部楼层 来自: 中国江苏无锡
这个问题看见好几次了。呵呵,我也在贴一次,模拟拉伸逼近。1 M& E" H7 R" C
上次看成弧长弦长了,现在搞好了~~
" r+ @8 a% Z$ {+ f& ]7 V(defun c:aaa()! X* W- S3 S0 M- }% E2 C
  (setq L1 (getreal "弧L1="))6 r: j% ]/ P, {; m8 B
  (setq L2 (getreal "弦高L2="))4 J& O% R2 b: o4 Q& {# }7 }* r
  (setq PT1 (list 0 L2))! m: b" h7 n, S' G& X; h
  (setq Ln (/ L1 2))3 G0 [' ^: n4 U9 |4 i
  (setq jd (/ L2 50))
- X" Y# n- m. H! q! }8 X1 |( v  (setq Lxx (+ L1 100))4 r, p' ~/ A" p0 X9 L  q: A6 s
(while ( or (> Lxx L1)
% V# ^# J' y% k             (< Ln 0.1)2 a  M$ ~+ V9 ^6 u+ f: J
        )
- H9 C. {: O3 @1 b" d  (setq PT2 (list (- 0 Ln) 0))
! n5 l& J. L0 M0 H5 _4 h1 U  (setq PT3 (list Ln 0))5 p; d) B8 `1 Q. _  l) P
  (command "arc" "none" PT2 "none" PT1 "none" PT3)
) ~; K2 z; N9 |3 O6 s+ n  A  (command "lengthen" (entlast) "")
; g% n* ?4 ~2 N* e# B+ T  (setq Lxx (getvar "perimeter"))2 T1 S* o& }* E2 q$ l
  (setq Ln (- Ln jd)) 4 g6 D4 l6 x9 n4 `: y: d/ [
  (command "ERASE" (entlast) "")
% X. U# E% c* E1 Y6 q6 ~, U( Q: ]. f )- ^, q. l# x$ t
;;;------------------( t" R. n1 ^8 c
(setq i 10)
$ m6 w% x9 F" m+ x; O3 Z(repeat i
, k6 T( \$ w( b- T1 N$ o+ u (setq Ln (+ Ln (* 2 jd)))) U- h% c# _: ~& E
(setq jd (/ jd 10))/ C9 G3 ^% \! _  k. a) W
(setq Lxx (+ L1 100)), F5 x% [# i) }7 {5 @) c" v6 T% }8 O
(while ( or (> Lxx L1)
' K  B7 m, s6 ~+ {" c5 V% i             (< Ln 0.1)9 R$ `* W: Z" A; v4 \& ~* L
        )8 o) ]3 m5 Y# Q8 ]: f* y
  (setq PT2 (list (- 0 Ln) 0))
6 |& N8 u4 a/ _" w0 k! q) o  (setq PT3 (list Ln 0))
# t' p/ o% o8 g3 h4 f  (command "arc" "none" PT2 "none" PT1 "none" PT3)+ ?3 t( e2 T6 N: Y8 J4 E
  (command "lengthen" (entlast) ""); F4 u9 q/ r; a2 P( N  c
  (setq Lxx (getvar "perimeter"))
0 {, |6 Y5 y; h. n4 p  (setq Ln (- Ln jd)) . S0 f  v4 N" y4 j, }; l- _3 m# y
  (command "ERASE" (entlast) "")! s$ H3 z5 L) c( x0 F' Y
)8 z8 g: a4 U$ o% p0 P# K
)6 k( W, s/ X; r: D: k
" ^  U" f) [6 j$ m- i1 P/ \
;;;------------------
% f( Q. s  m& E. ~/ b (setq Ln (+ Ln (* 2 jd)))0 l' _( m% \5 p3 a6 n( v; l
(setq jd (/ jd 50))
9 r% O3 b! x8 e# n0 b (setq Lxx (+ L1 100))
. q! V8 \0 C- }( }0 i% p+ F (while ( or (> Lxx L1)* \" x5 |& ^# R9 X3 K
             (< Ln 0.1)
' Y6 x7 M2 b' E; l& b3 P7 K5 C        )$ [. F$ j# j" P+ k
  (setq PT2 (list (- 0 Ln) 0))
6 t7 I& x% n; v/ ]  V: x& U  (setq PT3 (list Ln 0))5 k* h. i; U8 |, b: h3 _
  (command "arc" PT2 PT1 PT3), `! Q# H, E  t! }4 t* L
  (command "lengthen" (entlast) ""). X: Q3 ^6 U7 [3 C
  (setq Lxx (getvar "perimeter"))2 S' N) V- [' U. ?% [( c! }
  (setq Ln (- Ln jd))/ V3 ]7 s6 p7 X
     (if  ( or (> Lxx L1)
8 C) m, X* b6 v2 B             (< Ln 0.1)5 d/ Q% k- T  u( ?2 t$ |
          )6 G) }* E# m+ w4 I" ?3 e# _$ d
          (command "ERASE" (entlast) "")
. G5 O( i( B& p/ ^          ()
" E3 u3 f4 V; E% F) l7 V      )' Q$ b' ]9 I$ P! e
)! R( h, d( C, A& g
);(defun
. k' M6 Z( `4 F' q9 {1 U* i& ]4 T
! _( u/ ^- a. @; p[ 本帖最后由 www1974 于 2009-6-24 14:13 编辑 ]

评分

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

查看全部评分

发表于 2009-6-26 18:00:00 | 显示全部楼层 来自: 中国上海
R=H/1-cos(180°L/2πR)' N; b9 a0 m7 u; [/ L  q4 ~0 S
再计算出来就可以,这是我自己计算出的公式,麻烦了点
发表于 2009-7-29 08:35:49 | 显示全部楼层 来自: 中国湖北十堰
公式为:H=L^2/(8*R)" S8 P6 E" r1 y$ X! y6 Y4 ~0 K% f- T
H----弧高+ S0 O" x4 c% J8 j
L---弧长2 C1 m, h4 N+ [2 W# t3 S' q
R---曲率半径1 o; L9 N9 y* C, z0 m+ K3 ]9 I
请各位自行验算一下哦!!100%正确哦!!$ Y; t* j$ z# T9 M
4 p6 [6 m7 Q! r! 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.gif
# T$ c- ^9 m0 ]已知弧长L,弧高H。怎么求圆的半径R?

6 k1 Y6 \+ I. n8 Y! H看来楼主想用六米长的水管做蔬菜大棚
, H7 F" [6 Z  c已知弧长,设定玄长与玄高即可按下面口诀近似算出R值
' C4 s  H, [7 t2 \1 d2 u) O. z1 x# }
半玄乘半玄除以高再加高(得出的为近似直径); E: c" @& M  @+ \
8-2-1.jpg
" t! o9 U6 M2 d+ f
$ H( h. e" ]. O' j4 T9 m. M5 z 8-2-2.jpg
0 }" C6 v! b5 @$ A7 ?; U1 G4 U4 j9 p  t/ |* ]
[ 本帖最后由 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 )

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