Đến nội dung


Hình ảnh
- - - - -

(yêu cầu) lisp vẽ cung tròn với diện tích biết trước


  • Please log in to reply
14 replies to this topic

#1 phunam

phunam

    biết vẽ circle

  • Members
  • PipPip
  • 38 Bài viết
Điểm đánh giá: 2 (bình thường)

Đã gửi 28 March 2012 - 03:24 PM

Mình đang cần 1 lisp để vẽ cung tròn đã biết trước diện tích của nó để tính chiều cao của cung tròn này.File CAD kèm theo.Cảm ơn mọi người
http://www.mediafire...h4d51wynxgqj3pg
  • 0

#2 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 28 March 2012 - 03:44 PM

Mình đang cần 1 lisp để vẽ cung tròn đã biết trước diện tích của nó để tính chiều cao của cung tròn này.File CAD kèm theo.Cảm ơn mọi người
http://www.mediafire...h4d51wynxgqj3pg

Tìm "isp chia đất"mà dùng
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#3 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 28 March 2012 - 06:21 PM

Tìm "Lisp chia đất"mà dùng

Lisp chia đất của bác ssg chỉ đúng với đa giác kín, với đường tròn thì không còn đúng nữa anh à!
  • 1

#4 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5453 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 28 March 2012 - 09:22 PM

Lisp của SSG có đúng cũng chỉ gần đúng. Dùng tính toán hình học thuần tuý thì đúng tuyệt đối. Điều này không có gì quá khó.
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#5 phunam

phunam

    biết vẽ circle

  • Members
  • PipPip
  • 38 Bài viết
Điểm đánh giá: 2 (bình thường)

Đã gửi 28 March 2012 - 11:05 PM

Em đã thử lisp của Bác ssg nhưng với hình tròn thi bị sai hoàn toàn.Còn tính toán theo hình học thiì hơi lâu,nếu có lisp thì sẽ nhanh hơn nhiều.Bác nào có thể giúp đỡ em với không ak
  • 0

#6 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 28 March 2012 - 11:35 PM

Em đã thử lisp của Bác ssg nhưng với hình tròn thi bị sai hoàn toàn.Còn tính toán theo hình học thiì hơi lâu,nếu có lisp thì sẽ nhanh hơn nhiều.Bác nào có thể giúp đỡ em với không ak

Bạn thử nói cách tính hơi lâu của bạn khi xác định thủ công xem nào :)
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#7 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5453 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 28 March 2012 - 11:52 PM

Bạn thử nói cách tính hơi lâu của bạn khi xác định thủ công xem nào :)

Theo những gì mà tôi được biết, trong trường hợp tổng quát, bài toán này không thể giải ra nghiệm tuyệt đối đúng, mà chỉ có thể giải đúng dần bằng phương pháp Newton.
Trong toán học luôn có những bài toán phải giải bằng phương pháp đúng dần như vậy, chừng nào các nhà toán học chưa tìm ra phương pháp giải chính xác.
Không biết có ai có cách giải tốt hơn không?
srr vì lúc đầu nhận định đây chỉ là 1 bài toán thuần tuý hình học và đơn giản, do nhận định dựa vào các trường hợp đặc biệt.
P/S: tôi đã rút gọn về phương trình cuối cùng là x - cos(x) = a thì bí rị!
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#8 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 29 March 2012 - 06:51 AM

Theo những gì mà tôi được biết, trong trường hợp tổng quát, bài toán này không thể giải ra nghiệm tuyệt đối đúng, mà chỉ có thể giải đúng dần bằng phương pháp Newton.
Trong toán học luôn có những bài toán phải giải bằng phương pháp đúng dần như vậy, chừng nào các nhà toán học chưa tìm ra phương pháp giải chính xác.
Không biết có ai có cách giải tốt hơn không?
srr vì lúc đầu nhận định đây chỉ là 1 bài toán thuần tuý hình học và đơn giản, do nhận định dựa vào các trường hợp đặc biệt.
P/S: tôi đã rút gọn về phương trình cuối cùng là x - cos(x) = a thì bí rị!

Thế là đụng phải Phương trình Siêu việt rồi!
Hồi thời sinh viên, đi học thường thì gặp mấy phương trình siêu việt này, mình thường giải bằng phương pháp đồ thị
Và với bài toán này, ta có thể giải gần đúng như sau:
- Gọi diện tích hình viên phân tạo bởi cung AB như trong file là S1
- Gọi diện tích hình quạt OAB là S2, diện tích tam giác AOB là Stg
- Gọi góc chắn cung AOB là a (radian)
- Gọi diện tích hình tròn tâm O là S => bán kính R = S/ (pi*pi)

S2= a*R*R
Stg = [R*R*sin(a)]/2
=> S1 = a*R*R - [R*R*sin(a)]/2
S1 và R đã biết, còn lại biến a
Ta giả sử chia góc a thành các góc tương đối nhỏ b, dùng vòng lặp với gia số tăng qua các vòng lặp là +b. (Biến b tăng lên qua mỗi vòng lặp là +b )
Qua mỗi vòng lặp Kiểm tra b*R*R - R*R*sin( b ) /2 = S1 không? Nếu lớn hơn S1 thì dừng vòng lặp lại
và kết quả là biến b là góc chắn cung cần tìm.

Có góc chắn cung ta dễ dàng giải được bài toán.

Trên đây là lời giải cho bài toán mình đưa ra, Tue_NV không có nhiều thời gian để viết Lisp để giải bài này.
Nếu các bác có thời gian, viết giúp cho bạn phunam với nhé!
Có gì còn thiếu sót, các bác bổ sung thêm với ạ.

P/S : Có thể dùng Lisp chia đất với điều kiện biến đường tròn thành "polygon" có số cạnh tương đối lớn (theo kiến nghị của mình là số cạnh bằng 360). Tuy nhiên, vòng lặp nhiều -> máy chạy hơi lâu.
  • 1

#9 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 29 March 2012 - 07:07 AM

Các bác suy nghĩ chi cho mệt, vì bạn ấy nói làm thủ công hơi lâu, ta cứ chờ đáp án thủ công r làm thôi ^^ Trông hình thì giống mực nước trong ống vậy, lúc nào cũng nằm ngang :D
  • 2

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#10 Detailing

Detailing

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 667 Bài viết
Điểm đánh giá: 278 (khá)

Đã gửi 29 March 2012 - 01:06 PM

Mình đang cần 1 lisp để vẽ cung tròn đã biết trước diện tích của nó để tính chiều cao của cung tròn này.File CAD kèm theo.Cảm ơn mọi người
http://www.mediafire...h4d51wynxgqj3pg

Thế này chăng
Hình đã gửi

Lưu ý: Area tính theo unit của CAD nhé.

đánh lệnh netload dẫn đến file: CircularSegment.dll

lệnh là: SEG
Good luck!

Download Here

  • 3

Ideas don't matter, execution does!

1908412_308002392716743_8165279281236341


#11 haanh

haanh

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2876 Bài viết
Điểm đánh giá: 1555 (rất tốt)

Đã gửi 29 March 2012 - 01:13 PM

Các bác suy nghĩ chi cho mệt, vì bạn ấy nói làm thủ công hơi lâu, ta cứ chờ đáp án thủ công r làm thôi ^^ Trông hình thì giống mực nước trong ống vậy, lúc nào cũng nằm ngang :D

Vẽ bằng AutoCAD cũng ngon lắm!
Kết quả đây: H= 1067,6029476 ,Area = 2000000.0001

Hình đã gửi

File bản vẽ:
http://www.cadviet.c...7_haanh2012.dwg
  • 2

“Sống trong đời sống cần có một tấm lòng / Để làm gì em biết không ? / Để gió cuốn đi, để gió cuốn đi...”


#12 phunam

phunam

    biết vẽ circle

  • Members
  • PipPip
  • 38 Bài viết
Điểm đánh giá: 2 (bình thường)

Đã gửi 29 March 2012 - 01:39 PM

rất cảm ơn.Như Bác Doan Van Ha nói,em cũng giải phương trình x-sinx=a bằng máy tính casio nhưng kết quả rất thất thường,lúc đúng lúc sai tai vi nó phụ thuộc vào khoảng chọn nghiêm.Thanks tất cả.Mình sẽ dùng cái này.thanks!
  • 0

#13 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 29 March 2012 - 03:23 PM

Vẽ bằng AutoCAD cũng ngon lắm!
Kết quả đây: H= 1067,6029476 ,Area = 2000000.0001
http://www.cadviet.c...7_haanh2012.dwg

Em có thể nêu cách vẽ của em được không?
Anh xây dựng được Lisp tính dần theo phương pháp gần đúng
Chính xác 4 con số 0 sau dấu phẩy.
Đây là code


(defun c:hvphan(/ cir R s delta Res B)
(setq Cir (car(entsel "\nPick vao duong tron :")))
(setq R (/ (cdr(assoc 40 (entget Cir))) 1000.))
(setq s (getreal "\n Dien tich s (m2) :") )
(setq delta (/ pi 100000))
(Setq Res 0.0 b (/ s R))
(if (< s (* pi R R) )
(progn
(while (< Res s)
(setq Res (- (* b R R 0.5) (/ (* R R (sin B)) 2.0) ) )
(setq b (+ b delta))
)
(setq delta (/ pi 90000000000))
(while (> Res s)
(setq Res (- (* b R R 0.5) (/ (* R R (sin B)) 2.0) ) )
(setq b (- b delta))
)
(setq b (+ b delta delta))
(setq Res (- (* b R R 0.5) (/ (* R R (sin B)) 2.0) ) )

(alert (strcat "S=" (rtos (* Res 1000000.) 2 6) "\nh="
(rtos (* (- R (* R (cos (/ b 2)))) 1000.) 2 6)
)
)
)
)
)

  • 2

#14 Detailing

Detailing

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 667 Bài viết
Điểm đánh giá: 278 (khá)

Đã gửi 29 March 2012 - 09:51 PM

Fix lỗi sai số diện tích updated link ở post#10
hoặc download ở đây.
Download Here
  • 2

Ideas don't matter, execution does!

1908412_308002392716743_8165279281236341


#15 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5453 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 10 April 2012 - 10:30 AM

Cái này muốn tính đến sai số bao nhiêu cũng được (/=0), rất nhanh.

;Doan Van Ha - CADViet.com - Ngay 10/4/2012
;Muc dich: Ve Line xac dinh muc chat long theo dien tich (dien tich tinh theo don vi ve).
(defun C:HA( / ent dt ss cen bk h h1 h2 sinap/2 cosap/2 sinap ap)
(setq ent (car (entsel "\nChon Circle: ")))
(initget 7) (setq dt (getreal "\nDien tich: "))
(setq cen (cdr (assoc 10 (entget ent))))
(setq bk (cdr (assoc 40 (entget ent))))
(if (> dt (* pi bk bk))
(alert "Dien tich nay lon hon dien tich Circle: vo ly!")
(progn
(initget 7) (setq ss (getreal "\nSai so toi da: "))
(setq h1 0 h bk h2 (* 2 bk))
(while (> (abs (- dt (HA bk h))) ss)
(if (> (- (HA bk h) dt) ss)
(setq h1 (- h (/ (- h2 h1) 2)) h2 h h (/ (+ h1 h2) 2)) ;=>h giam
(setq h2 (+ h (/ (- h2 h1) 2)) h1 h h (/ (+ h1 h2) 2)))) ;=>h tang
(entmake (list (cons 0 "LINE") (cons 10 (polar cen (- (/ ap 2) (/ pi 2)) bk)) (cons 11 (polar cen (+ (/ ap -2) (/ pi -2)) bk))))))
(princ))
(defun HA(r h)
(setq sinap/2 (/ (sqrt (- (expt r 2) (expt (- r h) 2))) r))
(setq cosap/2 (/ (- r h) r))
(setq sinap (* 2 sinap/2 cosap/2))
(cond
((<= cosap/2 (/ (sqrt 2) -2)) (setq ap (+ (* 2 pi) (asin sinap))))
((< cosap/2 (/ (sqrt 2) 2)) (setq ap (- pi (asin sinap))))
((>= cosap/2 (/ (sqrt 2) 2)) (setq ap (asin sinap))))
(- (* 0.5 ap r r) (* 0.5 sinap r r)))
;----- ArcSine - Lee Mac, Args: -1 <= x <= 1
(defun asin (x) (cond ((< 1.0 (abs x)) nil) ((equal (abs x) 1.0 1e-8) (* x pi 0.5)) ((atan x (sqrt (- 1.0 (* x x)))))))

  • 3

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.