在我以前的帖子里面,有纯公式求弓形的质心和面积:
 - ;;;-------------------------------------------------------------
- ;;;Circular segment
- ;;;弓的质心求以及弓形的面积
- ;;;输入: C---圆心;Center
- ;;; R---半径;Radius
- ;;; A1--起始角;0 <= A1 <= 2*Pi Start Angle(Radian)
- ;;; A2--终止角;0 <= A2 <= 2*Pi End Angle(Radian)
- ;;; IsCW--是否顺时针
- ;;;输出: 列表: 第一项为质心,第二项为面积,第三项为弧长
- ;;;-------------------------------------------------------------
- (defun CIR:Circular_Segment (C R A1 A2 IsCW / A k d S e)
- (and isCW (setq A A2 A2 A1 A1 A))
- (if (> A1 A2)
- (setq A (- (+ pi pi A2) A1 ))
- (setq A (- A2 A1))
- )
- (setq k (sin (* 0.5 A)))
- (setq k (* 1.333333333333333333333 R k k k))
- (setq e (- A (sin A)))
- (setq S (* 0.5 R R e))
- (and IsCW (setq S (- S))) ;如果顺时针,面积为负
- (setq d (/ k e))
- (if (> A1 A2) (setq d (- d))) ;这种情况下要反向
- (list (polar C (* 0.5 (+ A1 A2)) d) S (* A R))
- )
还有扇形的质心,面积等。
 - ;;;-------------------------------------------------------------
- ;;;Circular sector
- ;;;扇形的质心,面积和周长
- ;;;输入: C---圆心;Center
- ;;; R---半径;Radius
- ;;; A1--起始角;0 <= A1 <= 2*Pi Start Angle(Radian)
- ;;; A2--终止角;0 <= A2 <= 2*Pi End Angle(Radian)
- ;;; IsCW--是否顺时针
- ;;;输出: 列表: 第一项为质心,第二项为面积,第三项为周长
- ;;;-------------------------------------------------------------
- (defun CIR:Circular_Sector (C R A1 A2 IsCW / A d S L)
- (and IsCW (setq A A2 A2 A1 A1 A))
- (if (> A1 A2)
- (setq A (- (+ pi pi A2) A1))
- (setq A (- A2 A1))
- )
- (setq d (/ (* 4 R (sin (* 0.5 A))) 3 A))
- (setq S (* 0.5 A R R))
- (and IsCW (setq S (- S))) ;如果顺时针,面积为负
- (setq L (* R (+ A 2))) ;周长
- (if (> A1 A2) (setq d (- d))) ;这种情况下要反向
- (list (polar C (* 0.5 (+ A1 A2)) d) S L)
- )
|