QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
2天前
楼主: geng75
收起左侧

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

[复制链接]
发表于 2009-6-22 19:27:57 | 显示全部楼层 来自: 中国江苏南通
设弧高h,弧长l,半径为r. 那么这段弧对应的夹角弧度为d=l/r.
/ S) J% L! w/ c6 B, L4 A由简单的计算可知: 1-h/r=cos(d/2)
5 x4 i/ q$ q, x1 p所以由倍角公式得,
/ f# `* i! y  `6 \& wcos d= 2(1-h/r)^2-1=1-4h/r+2h^2/r^2
9 _0 v; U5 C7 u8 z2 K, A又因 d=l/r
* {# {' I2 p$ `. j0 r6 w故得方程:cos(l/r)=1-4h/r+2h^2/r^2
# }1 V- N# e0 k; f+ U当然,这是超越方程,没法求精确解。所以我们只好退而求其次,求它的近似解。
/ ?) g" x* \+ R& T  m: V6 {  R考虑cosx的幂级数展开:) `2 O3 f; h1 Z& ^: G* C
cosx=1-1/2*x^2+1/24*x^4-1/720*x^6+...
! f6 G. ?$ d% X# i# y& [4 p于是上述方程在1阶精度上近似等于:/ {1 R4 T) k$ A4 m: A3 G7 @
4(h/l)+(2(h/l)^2-1/2)*(l/r)=0+ j6 d' N. m4 o, |1 p0 y9 y, A+ L
从而r=(l/8)*((l/h)^2-4)
7 l6 ~* o+ g6 ~0 J当然,如果你想得到更精确的计算值,也可以用牛顿迭代法。这里就不展开了。你可以去看任何一本讲《数值计算》的书。

评分

参与人数 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
6 `. P+ C( o+ f9 k9 o设弧高h,弧长l,半径为r. 那么这段弧对应的夹角弧度为d=l/r.
. _  t! k+ B2 G, V/ r, X) D) p由简单的计算可知: 1-h/r=cos(d/2)
  ~/ u  G5 v3 |' [' j1 j! u所以由倍角公式得,
( n% Z# H  i3 q/ L4 J* x  S$ Y% Dcos d= 2(1-h/r)^2-1=1-4h/r+2h^2/r^2
- N. Z! H- L& w% O8 U' I又因 d=l/r
3 x8 ~: X, N/ {故得方程:cos(l/r)=1-4h/r+2h^2/r^2: y" j! c/ t* p
...
; ]1 A1 x' d* A5 k/ n6 v! n
" y# v) N5 y) @& D. G; G+ L
楼上用泰勒展开式近似计算是个办法,在Excel中用迭代得到数值用在cad中,下面这个式子的精度就足够了:
" \) {$ f- {0 P: d5 U8 C! p  e' G+ @! L( f+ w, ]; y/ y1 h/ n
!jd.gif

评分

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

查看全部评分

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

回复 21# j422 的帖子

用EXL的方法求解是不得已的事,因下列原因,一直未能推广。* ]+ S( `0 f8 I9 X, }, I  E: l

# P* y# s. b/ p# v4 P1.很明确了,无解。要有解必须是400.000000009.% p8 o+ \* ^9 @' F* n( m# l' a
为什么?因为这个565.497是EXL用无限趋近的方法求得的)。. P4 R: V: y2 B9 n  i. |4 n, M7 ~3 O/ ]

& J3 d- A6 x/ f9 I+ @% E' o7 S' w2.变量求解不是用在这种情况下,因为我们的R是未知的,它无法用具体数值先去表示。变量求解其实是个暴力求解法。如MD5解密一样,首先要有可以对照的数字。
; f# \$ \$ Z! y$ @; n& Q/ Z: K3 q5 N3 M+ n5 @! x. Y
所以,要求这个R值,我们必先假定一个R值,而这个R值如果假定得离所求弧长400越接近,那么单变量求出的R值就越近似,精度就越高。
3 ]" D: C% Y8 E; i+ f3 \$ c, |* ?' Q2 P  Q4 M! o
好比:我假设这个R值为565,然后让EXL或MD5去暴力穷解,当解到接近弧长为400这个数值时,非标答案就产生了:R=565.4981,弧长L=400.0003909,
% m5 w9 L$ L2 U! S# O3 P- K0 x% j3 f% a/ N  q
综上所述,这是个凑答案的方法,是无法正确求得精确解的。$ c5 f4 r- L' x9 @/ d
. q7 P  ~$ e' W) \& B1 U4 `
但是,有一点可以肯定的是:只用这两个条件只能是近似的求解。无法求出精度为0的值。
5 m9 Q+ g5 i4 B9 v9 d' w4 y' a/ `9 p; Q+ G
这个方法

评分

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

查看全部评分

发表于 2009-6-22 22:48:39 | 显示全部楼层 来自: 中国江苏苏州
原帖由 czy12 于 2009-6-22 21:09 发表 http://www.3dportal.cn/discuz/images/common/back.gif9 k  |3 b  u4 ]% X) j% U
用EXL的方法求解是不得已的事,因下列原因,一直未能推广。
7 r! Z  H7 V4 p! g7 j
7 n% I. a0 P9 L4 h1.很明确了,无解。要有解必须是400.000000009.
. t, w- M2 I. k. A, L, I. f8 I为什么?因为这个565.497是EXL用无限趋近的方法求得的)。8 M  N# v6 M. G  }& @
5 T3 n) `% E9 x
2.变量求解不是用在这种情况下,因为我们 ...
8 H9 D# f, M/ m3 |$ _
4 g3 `0 X4 ~5 t" ^# \2 U: k. [
显示可以精确解到400,精度可设到小数点后30位.
已知弧长L,弧高H。怎么求圆的半径R.JPG

评分

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

查看全部评分

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

评分

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

查看全部评分

发表于 2009-6-23 14:14:39 | 显示全部楼层 来自: 中国江苏无锡
这个问题看见好几次了。呵呵,我也在贴一次,模拟拉伸逼近。/ J, \7 ^- a0 a
上次看成弧长弦长了,现在搞好了~~
3 Y) R1 c4 a. L5 N8 l, E& r(defun c:aaa()
; D* P# J: r) g2 f( P4 i( \/ H4 D9 x  (setq L1 (getreal "弧L1="))+ G6 w+ }% P( h  y% t& i
  (setq L2 (getreal "弦高L2=")). G" R& k# w* R4 B( x
  (setq PT1 (list 0 L2))+ z9 f6 T! o3 s: ?, I+ K
  (setq Ln (/ L1 2))
4 b) i( F6 ]- B  (setq jd (/ L2 50))
  P) y! V# r8 y  {" k1 T8 w  (setq Lxx (+ L1 100))
. J' H* z1 d8 q4 _; J5 U (while ( or (> Lxx L1)
. F7 i2 R- l# a             (< Ln 0.1)3 w) p( W- h; _0 w% m& n
        )
& H4 x0 l5 t& g* m/ _7 z2 Y  (setq PT2 (list (- 0 Ln) 0))
" D/ w3 C( q. E7 ~. I8 H  (setq PT3 (list Ln 0))0 q% v0 Z) O& j) e  R2 u. ], A
  (command "arc" "none" PT2 "none" PT1 "none" PT3)
9 I, n' p9 b2 K3 s3 Q0 _! k; E6 M6 u  (command "lengthen" (entlast) "")
* H2 t0 T; [0 Q! v: v& d; K  (setq Lxx (getvar "perimeter"))5 m, U7 ^. w$ ~
  (setq Ln (- Ln jd)) 1 G; f6 G" I6 V
  (command "ERASE" (entlast) "")8 y3 A* C6 V% K  ^
)( M" E8 d2 N* I6 T( I
;;;------------------
2 {! }+ i8 q9 Z% L" ?/ g- v(setq i 10)1 o6 ~- X+ R; _. e
(repeat i- I6 |6 v  U$ ^+ ?
(setq Ln (+ Ln (* 2 jd)))
. u; Y# t& H: ?$ p, R4 j/ T (setq jd (/ jd 10))
) U0 M2 ]7 Y, g$ i$ F (setq Lxx (+ L1 100))
9 b2 D9 t$ P1 h& |, D (while ( or (> Lxx L1)
# [7 h) ], ?2 f# W" ]/ P; n             (< Ln 0.1)
  d( q: G9 K2 B5 F$ [7 X  t. J4 r        ), \" G+ e+ q6 F4 _( p
  (setq PT2 (list (- 0 Ln) 0))
" U1 T" ~) a4 b; D5 C, L  (setq PT3 (list Ln 0))
2 h5 g) ?; M) J: F  (command "arc" "none" PT2 "none" PT1 "none" PT3)
! i( A$ r* |$ d  o/ u; O  (command "lengthen" (entlast) "")
# t$ @# R) M9 I7 n0 Y5 w7 b1 ~  (setq Lxx (getvar "perimeter"))
6 E& w; M( \3 S, R5 X4 g) g  (setq Ln (- Ln jd)) ; P1 ^: G5 g! V+ `
  (command "ERASE" (entlast) "")
3 @& [  h0 L9 t* { )  |  e* a/ v, `5 g  z) ]# g
)' H" d* r( V% y+ V9 h# i

: ~+ o3 O6 s4 }* v6 P5 D, T9 ?/ e& v;;;------------------
) Y) D3 K# J# l$ }! L (setq Ln (+ Ln (* 2 jd)))
* ?) u8 N5 F' f0 k (setq jd (/ jd 50)); H0 L; [: }) [
(setq Lxx (+ L1 100))) Q3 y# `' U2 K: V: t5 }# u
(while ( or (> Lxx L1)
) J2 g/ M7 Y7 t8 U8 D) M             (< Ln 0.1)% W0 s. |8 O2 \+ T
        )
6 w3 G" I4 b6 ~9 `# r2 f2 {5 C  (setq PT2 (list (- 0 Ln) 0))
* j% Y8 n* l/ g  (setq PT3 (list Ln 0))4 b& R  |1 S8 G( S( P& W; w( U
  (command "arc" PT2 PT1 PT3)
$ |2 p% `$ H# I' [6 [  (command "lengthen" (entlast) "")" e9 y8 G3 j, A
  (setq Lxx (getvar "perimeter"))2 E/ B% y& Y2 Y1 O* H+ d! s
  (setq Ln (- Ln jd))+ E1 d+ p  U5 {  v1 Y
     (if  ( or (> Lxx L1)" n: r- E; {9 P7 C3 _
             (< Ln 0.1)0 `8 H( ]+ j" `( `1 ]; E4 z
          )
# ~6 E+ M/ o- Y( G3 k6 ^5 G          (command "ERASE" (entlast) ""), @; m  ?9 w6 b( E7 D6 g6 G0 |
          ()7 a7 K; X4 {) B# r8 Q
      )
! o; ~5 J/ t# d& f )
% U) s4 t8 `9 ^0 k' L8 L& n; r; ]);(defun! q# B7 K; G9 _$ N. D

& X0 q% I( ~6 d' O4 {[ 本帖最后由 www1974 于 2009-6-24 14:13 编辑 ]

评分

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

查看全部评分

发表于 2009-6-26 18:00:00 | 显示全部楼层 来自: 中国上海
R=H/1-cos(180°L/2πR)
( ~+ B+ N/ a& G1 F- ?; p, [( k+ r再计算出来就可以,这是我自己计算出的公式,麻烦了点
发表于 2009-7-29 08:35:49 | 显示全部楼层 来自: 中国湖北十堰
公式为:H=L^2/(8*R)! t0 i1 A8 g1 U/ H+ T
H----弧高
6 L* Z+ x2 F. S5 A7 Z2 KL---弧长
7 D! z& k: Q. P' Z. M6 M, h  SR---曲率半径7 j9 Y) {/ N/ W  p+ m( x
请各位自行验算一下哦!!100%正确哦!!
* U6 W4 \! g: d/ ?. `$ P" [4 }! F- P5 h# \2 L
[ 本帖最后由 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
- D- [. {9 ^- D9 O: c: s. N, ^: \已知弧长L,弧高H。怎么求圆的半径R?
, o' |8 |& ^' g2 r! f* d4 N
看来楼主想用六米长的水管做蔬菜大棚4 H7 m1 M" j  @: K7 T  b6 o
已知弧长,设定玄长与玄高即可按下面口诀近似算出R值
! m" a$ n  l; a
1 h2 l) d! p6 f  W, ]; X半玄乘半玄除以高再加高(得出的为近似直径)
( r! @) n8 {3 w$ ^+ H 8-2-1.jpg 5 d5 g# F% s8 r9 ?) p! L  N
0 m! d9 ~- W  Y1 v% Y: F! e- Y
8-2-2.jpg
7 R7 V0 [) t, ~/ y4 N- u$ A9 C
1 E5 t8 r7 F# A5 k: h+ m[ 本帖最后由 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 )

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