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.
' H9 S/ u* w# G( j9 Y由简单的计算可知: 1-h/r=cos(d/2): C0 K$ \+ G# j, H
所以由倍角公式得,
, o" e4 A' E& Z! {+ v0 d3 L5 L# @cos d= 2(1-h/r)^2-1=1-4h/r+2h^2/r^20 t* i! ?+ r/ I
又因 d=l/r3 q: z* V3 @1 a* D4 ~* n
故得方程:cos(l/r)=1-4h/r+2h^2/r^2
' j7 a, P4 Y2 y% s3 E1 L* ?/ x# r当然,这是超越方程,没法求精确解。所以我们只好退而求其次,求它的近似解。
; [8 _2 N& z$ i4 c3 K考虑cosx的幂级数展开:+ ?* i; `1 w, _0 Y6 L# i2 L0 o
cosx=1-1/2*x^2+1/24*x^4-1/720*x^6+...
3 b3 ~" @) N. j1 G+ a: _. e于是上述方程在1阶精度上近似等于:) W$ o1 P- ~( `
4(h/l)+(2(h/l)^2-1/2)*(l/r)=04 v+ c7 S9 y: }% i: y- ^
从而r=(l/8)*((l/h)^2-4)2 z2 [# [* Z) V* J3 s. P1 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
/ M  s3 L* {9 _5 k设弧高h,弧长l,半径为r. 那么这段弧对应的夹角弧度为d=l/r. ) D. G% F6 C& `' o* s
由简单的计算可知: 1-h/r=cos(d/2)* N9 X& W3 i, \5 i
所以由倍角公式得,
2 C4 y3 q# q6 J/ j9 ^cos d= 2(1-h/r)^2-1=1-4h/r+2h^2/r^28 ]- O- X" O* k) b3 z- }7 _. K+ F
又因 d=l/r4 H/ @% M  L3 q% ?% Q8 y
故得方程:cos(l/r)=1-4h/r+2h^2/r^2
2 \4 `1 T4 ~1 Q% h...
5 a* {* M3 X. ~" `2 |

3 d4 H/ X& Q8 [7 O7 I/ ]: U% R楼上用泰勒展开式近似计算是个办法,在Excel中用迭代得到数值用在cad中,下面这个式子的精度就足够了:
( T# Q3 f7 I9 |  l
( m2 a  m7 a# A7 ~  N' B  ~% V1 c. H !jd.gif

评分

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

查看全部评分

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

回复 21# j422 的帖子

用EXL的方法求解是不得已的事,因下列原因,一直未能推广。
. j  F, ?. J# e- e2 }  X, U
" f0 G" G, G6 o' w6 \7 B1.很明确了,无解。要有解必须是400.000000009.
+ f. T" U6 X- l8 _0 H3 ~: a7 w. B' u为什么?因为这个565.497是EXL用无限趋近的方法求得的)。4 Q, g% U8 T+ @( x$ x3 m

3 M) E. p- e0 S8 b& e8 f2 f2.变量求解不是用在这种情况下,因为我们的R是未知的,它无法用具体数值先去表示。变量求解其实是个暴力求解法。如MD5解密一样,首先要有可以对照的数字。
( k9 H+ R& u9 S
# i7 n" J: x: O4 S" @) c所以,要求这个R值,我们必先假定一个R值,而这个R值如果假定得离所求弧长400越接近,那么单变量求出的R值就越近似,精度就越高。
# ^* q; }( l- [$ e2 ]  m* R7 J) L: |. B' C$ C
好比:我假设这个R值为565,然后让EXL或MD5去暴力穷解,当解到接近弧长为400这个数值时,非标答案就产生了:R=565.4981,弧长L=400.0003909,
7 y0 e8 X% l: @. o7 U
3 T2 w( \3 c& `1 Y综上所述,这是个凑答案的方法,是无法正确求得精确解的。: m( K- e  ?  n! J# P
0 u3 u( v1 q+ B4 {, R
但是,有一点可以肯定的是:只用这两个条件只能是近似的求解。无法求出精度为0的值。
  o1 C! T6 V6 q1 T: P* L, _7 N% i
5 }) `+ r5 u* Y( v/ o! b: Z  {: w这个方法

评分

参与人数 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' j! w3 }; Z+ F& M+ B: f
用EXL的方法求解是不得已的事,因下列原因,一直未能推广。
8 Z2 q# w! A. g3 Y( o! p" T4 q- @; d3 {  R4 S6 T6 l
1.很明确了,无解。要有解必须是400.000000009.
+ O# W1 u$ ?+ l6 G为什么?因为这个565.497是EXL用无限趋近的方法求得的)。  m: N0 l  i% y/ C- L2 t

' F; G( a/ o$ n3 D; @# v1 Z2.变量求解不是用在这种情况下,因为我们 ...

' b. W/ S, S6 _" `) |2 i- y2 |+ X7 F; a3 ?+ j, R7 Z
显示可以精确解到400,精度可设到小数点后30位.
已知弧长L,弧高H。怎么求圆的半径R.JPG

评分

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

查看全部评分

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

评分

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

查看全部评分

发表于 2009-6-23 14:14:39 | 显示全部楼层 来自: 中国江苏无锡
这个问题看见好几次了。呵呵,我也在贴一次,模拟拉伸逼近。
3 J$ j  ]: d3 F  U/ h. E上次看成弧长弦长了,现在搞好了~~2 b3 T1 U6 n/ j3 q% F9 B. y
(defun c:aaa()
) ]7 d: |) ^3 G3 a( W5 E  N  (setq L1 (getreal "弧L1="))
' ~4 C! p; b7 ~) T/ N; G' R( X  (setq L2 (getreal "弦高L2="))
' y8 a, F- w8 _0 `, O  (setq PT1 (list 0 L2))
; t8 @" k& n, l, I  (setq Ln (/ L1 2))3 F1 e& x) v( W+ n% K. R: A
  (setq jd (/ L2 50))
! @2 i8 R! F0 u, e8 i/ {  (setq Lxx (+ L1 100))! `* t; Q/ C' X8 Q% Q/ Y- v
(while ( or (> Lxx L1)
3 A! N+ n8 V( Z" d( W$ Y6 o             (< Ln 0.1)8 p% W# `4 G! c
        )
9 \2 G# u) R+ v  (setq PT2 (list (- 0 Ln) 0))2 G/ S3 _( j  D9 A( Q0 t% ]
  (setq PT3 (list Ln 0))
" L0 x, v% W# X1 w1 o3 x+ O  (command "arc" "none" PT2 "none" PT1 "none" PT3)% x7 Q9 |! s( O% A6 T. |( e+ e6 H7 b
  (command "lengthen" (entlast) ""): K% |! K" y4 J- L+ c: L' e5 T7 Y
  (setq Lxx (getvar "perimeter"))
' \5 v$ {1 S$ m, H8 A% @/ `  (setq Ln (- Ln jd))
) f$ Q: S& m; q  (command "ERASE" (entlast) "")/ j& I2 i1 Y( V6 E8 K. `; C
)
: r3 G- l$ B- P4 t2 d, w8 T;;;------------------
6 M! i8 o" {/ ]5 v+ \  _(setq i 10)
$ z% h7 u- i2 n" \(repeat i, j) a+ ^. ^' R* `9 K1 u) o+ R
(setq Ln (+ Ln (* 2 jd))), Z9 U& T0 d2 H7 |% m8 R
(setq jd (/ jd 10))
% B( v* ]/ r+ F1 I (setq Lxx (+ L1 100))3 h- f6 v; y0 l" L% y
(while ( or (> Lxx L1)
8 E; ^7 y  M# P             (< Ln 0.1)2 b  t8 L" A, K- e1 Y$ L
        ), D7 j/ w- _4 ]
  (setq PT2 (list (- 0 Ln) 0))
1 g) \& M0 E2 G, i9 t8 F  (setq PT3 (list Ln 0))- W" a* d' b# f
  (command "arc" "none" PT2 "none" PT1 "none" PT3)
0 \( ?6 t' U9 t7 u3 P  (command "lengthen" (entlast) "")
" \, E! R& _' G  U9 O$ G7 k2 V; O  (setq Lxx (getvar "perimeter"))( x5 k2 b7 N/ b# {4 ~4 `) F
  (setq Ln (- Ln jd)) ! _: n* k+ e' l1 y0 J. N8 C
  (command "ERASE" (entlast) "")
: W: J- h4 l* R )
4 O( g8 ?- |) O' |3 M9 a)) @2 Y1 l5 n% s* @! E' w& s

% ^7 R$ o6 }9 r. M" h;;;------------------6 S. B/ R: E/ q7 ?0 U
(setq Ln (+ Ln (* 2 jd)))
; s8 ^9 A6 f9 a! ^3 `7 E2 d (setq jd (/ jd 50))
! G( ?1 Q) ?0 n+ k (setq Lxx (+ L1 100))
" c5 h$ {' I* g0 c (while ( or (> Lxx L1)  d' y  V7 p: b& R: J
             (< Ln 0.1)
3 H# X* @2 A, O0 Y, I- o  f% x        )
0 _: x- @' c( l  @  (setq PT2 (list (- 0 Ln) 0))
. ?+ k- s1 h1 \7 X* O  (setq PT3 (list Ln 0)); Q: y5 e! t5 I  E9 r" a
  (command "arc" PT2 PT1 PT3)
& l. w  r( r% K' x- e  (command "lengthen" (entlast) "")
5 d5 b) w& U! q; g1 ~4 w  (setq Lxx (getvar "perimeter"))4 \$ e' f  X) ?# e( W# o" H. \
  (setq Ln (- Ln jd)); W# ^% C8 e! a4 O! X  b5 Q
     (if  ( or (> Lxx L1)
8 b% v+ K3 K) I( l/ G" E/ B             (< Ln 0.1)$ r2 C; Q5 Q9 {# }8 {
          )
& C' E* L8 n  [7 D4 ]1 j! x          (command "ERASE" (entlast) "")- A1 s. N( ^3 u. E6 e) b( f- X
          ()
/ K; ]$ v9 D$ @3 E+ Q7 f      )
* C! [1 D7 g& `, v5 t$ Z% s )
" R3 D. M0 ~/ H  E);(defun& S* ~. _% G& X' S2 C( n
. C# }5 ^: j$ K$ l, g8 I" e
[ 本帖最后由 www1974 于 2009-6-24 14:13 编辑 ]

评分

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

查看全部评分

发表于 2009-6-26 18:00:00 | 显示全部楼层 来自: 中国上海
R=H/1-cos(180°L/2πR), x# A- m; c' U2 ]0 |0 M# }
再计算出来就可以,这是我自己计算出的公式,麻烦了点
发表于 2009-7-29 08:35:49 | 显示全部楼层 来自: 中国湖北十堰
公式为:H=L^2/(8*R)
3 X, o9 D. L, j- q! X  S% vH----弧高/ p+ O; c. @; {5 M- Y. ], W5 y# [
L---弧长
, P  d! G( u* b! _1 |& dR---曲率半径( p5 w( N  t4 B# E. u$ ~
请各位自行验算一下哦!!100%正确哦!!2 k# d7 I' U. Z: C7 _1 V
- p# b! I* Q- l2 I  D- 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.gif9 A$ m0 x+ H, L. y' J
已知弧长L,弧高H。怎么求圆的半径R?
! H9 D/ U  g- v  K* t( d
看来楼主想用六米长的水管做蔬菜大棚
. I3 D  N* x( P0 N已知弧长,设定玄长与玄高即可按下面口诀近似算出R值
9 c- F' r+ o4 [6 f' F
$ }3 j3 o2 H3 Y/ P/ b$ H( @+ {) H& n半玄乘半玄除以高再加高(得出的为近似直径)" k. W& j/ i4 ]) c
8-2-1.jpg 7 u2 g+ p" q' d/ `" }# @
1 G. ]1 S* v/ \8 Z
8-2-2.jpg
, |+ W; o  V: [5 Y7 L3 E& b: `# P+ w6 R
[ 本帖最后由 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 )

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