Chuyển đến nội dung
Diễn đàn CADViet
Binh Luu

[TÌM CAO NHÂN] LISP THỐNG KÊ ĐA GIÁC PLINE

Các bài được khuyến nghị

27 phút trước, ngokiet đã nói:

·- Vấn đề là mình hỏi là đã giải quyết các vấn đề này chưa thôi?

Chứ có vấn đề là giải quyết được hết.

Vì mình tính viết thử nhưng có bạn viết rồi thôi.

Cách suy nghĩ mình so sánh đa giác là dựa trên n cạnh và n góc. Cho nên khi so sánh cũng đơn giản. Nếu tìm hình đồng dạng thì góc không thay đổi chỉ tính tỉ lệ cạnh. Cách dịch chuyển hay đảo chiều cũng dễ.

 

E giải quyết đc rồi, bác cũng có thể viết mà, có khi còn trường hợp nào xót thì sao.

hinh4.png.78763ac19fece0ce144ecf4799e1e414.png

16 phút trước, DuongTrungHuy đã nói:

Hi.

Xem ra bài toán cũng khá lý thú.

 

Mình định xếp thứ tự so sánh lần lượt như sau:

1- Số cạnh

2- Diện tích

3- Chu vi.

4- Tạo danh sách chiều dài cạnh, xếp từ nhỏ đến lớn (để tránh cạnh xuất phát). Các phần tử trong danh sách này tương ứng = thì tiếp

5- Tạo thêm 1 danh sách các góc tương tự 4.

qua 5 bước trên thì xem như giống nhau thực sự.

 

Nếu có ý gì hay Bạn có thể góp ý thêm. Chào nhé!

Chắc là vậy đó bác, e còn bước so sánh đường tròn ngoại tiếp cho chắc

  • Like 1
  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

 

doan-nguyen-van:

E giải quyết đc rồi, bác cũng có thể viết mà, có khi còn trường hợp nào xót thì sao.

Chắc là vậy đó bác, e còn bước so sánh đường tròn ngoại tiếp cho chắc.

 

Vậy là tốt rồi, Bye!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
6 giờ trước, Doan Nguyen Van đã nói:

E giải quyết đc rồi, bác cũng có thể viết mà, có khi còn trường hợp nào xót thì sao.

hinh4.png.78763ac19fece0ce144ecf4799e1e414.png

Chắc là vậy đó bác, e còn bước so sánh đường tròn ngoại tiếp cho chắc

Không biết chủ thớt có phân biệt hình đối xứng nhau không? Ví dụ 2 tam giác đối xứng nhau thì có đầy đủ tính bạn xét nhưng chiều quay ngược nhau.

 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
11 giờ trước, ngokiet đã nói:

Không biết chủ thớt có phân biệt hình đối xứng nhau không? Ví dụ 2 tam giác đối xứng nhau thì có đầy đủ tính bạn xét nhưng chiều quay ngược nhau.

 

Mình có ý này.

 

Ta cũng có thể tạo ra 1 Poly đa giác phụ, qua trung điểm của đa giác bài toán; Và ta tìm sự bằng nhau của cả 2 đa giác này. Và ta có điều kiện là.

1.- Số cạnh 2.- Diện tích đa giác 3.- Chu vi của đa giác.

Nếu 3 điều kiện này (áp lên cả đia giác phụ) của 2 cặp đa giác bằng nhau thì nó bằng nhau là ổn bạn à.

 

Chào Bạn.

  • Like 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
9 phút trước, ketxu đã nói:

Bài toán này hay quá. Có time nhất định đưa vào Toolbox :o Lót dép hóng

Ket: Xem các post từ đầu thấy chỉ có ạnh người tuyết là đưa ra lý thuyết thuyết phục nhất >> giải theo hướng này là OK 100%, còn các g/p khác chỉ hên xui.

Việc g/q code theo người tuyết cũng không quá khó đâu. 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
35 phút trước, ketxu đã nói:

Bài toán này hay quá. Có time nhất định đưa vào Toolbox :o Lót dép.hóng

Chào nhé.

...Ủa bài toán đã được Bạn Doan viết xong rồi mà.

Bạn thấy ý tưởng mình có ổn ko (lập đa giác phụ).

Thật ra trong các thông số hình dạng cũng có 1 thông số Momen tĩnh là khá tốt kèm theo chu vi và diện tích của đa giác. Nhưng Momen thì khi quay đa giác lại làm Momen khác đi nên ko dùng được. Bạn có ý gì về bài toán này ko.

Chào @ketxu

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
2 giờ trước, DuongTrungHuy đã nói:

Chào nhé.

...Ủa bài toán đã được Bạn Doan viết xong rồi mà.

Bạn thấy ý tưởng mình có ổn ko (lập đa giác phụ).

Thật ra trong các thông số hình dạng cũng có 1 thông số Momen tĩnh là khá tốt kèm theo chu vi và diện tích của đa giác. Nhưng Momen thì khi quay đa giác lại làm Momen khác đi nên ko dùng được. Bạn có ý gì về bài toán này ko.

Chào @ketxu

Chào bác, ý tưởng đó thì khá chặt chẽ hơn, nhưng sau khi tham khảo bài toán thực tế của bác chủ tus thì không cần thiết phải quá giống nhau như vậy, các hình đa giác chủ yếu có 4-5-6 cạnh, có thể có cạnh là đường cong ARC. Nên mọi lý thuyết chặt chẽ bình thường đều bị bác bỏ. Nhưng nói chung nó cho ra kết quả gần đúng là đạt ý chủ tus rồi 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

@Doan Van Ha Bác ơi Similarity còn có trường hợp hình được Scale với hệ số K nên Ket cứ ngồi hóng thôi ạ ^^
@Duong Trung Huy : ket chưa có time ngồi ngó hệt ạ
 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
1 giờ} trướ}c, ketxu đã nói:

@Doan Van Ha Bác ơi Similarity còn có trường hợp hình được Scale với hệ số K nên Ket cứ ngồi hóng thôi ạ ^^

2 hình bằng nhau chứ không phải đồng dạng đâu. Google có định nghĩa 2 hình phẳng bằng nhau, nhưng mọi người đang đi theo hướng khác mất rồi.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
1 giờ} trướ}c, Doan Van Ha đã nói:

2 hình bằng nhau chứ không phải đồng dạng đâu. Trong video có nói rõ. Google có định nghĩa 2 hình phẳng bằng nhau, nhưng mọi người cứ đi theo hướng đâu đâu nên chán rồi.

Đâu, ý cháu là muốn nó mở rộng nó lên nữa

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Hì thấy vấn đề vẫn đang HOT quá mình đưa lên các Bạn xem cho vui.

(Cái này chỉ là tham khảo thôi, còn vấn đề của chủ đề tài yêu cầu thì Bạn Doan Nguyen Van đã giải quyết rồi, mình ko liên quan nhé, cũng cám ơn Bạn đã trao đổi)

Ghi chú: Chữ 5=1 nghĩa là loại đa giác thứ 5 có 1 đa giác

 

Phần mềm nó đây; Các bạn có thể tham khảo góp ý.

Trong đó mình thể hiện ý tưởng thuật toán đã trình bày với thông số cv2 và dt2 là chu vi và diện tích đa giác phụ.

 

(Defun MakeTEXT3a (d0 text1) (entmake (list (cons 0 "TEXT")(cons 10 d0)(cons 1 text1)(cons 40 2) (cons 11 d0))))
(defun MakePoly(dsdinhP / ndinh0 ds0a dsa)
  (setq ds0a '() ndinh0 (length dsdinhP))
  (Foreach pt dsdinhP (setq ds0a (append ds0a (list (cons 10 pt)))))
  (setq dsa (append (list (cons 0 "LWPOLYLINE")) (list (cons 100 "AcDbEntity")) 
                    (list (cons 100 "AcDbPolyline")) (list (cons 90 ndinh0)) ds0a
            )
  )
  (entmake dsa)
)

(Defun Mid0(A B) (setq ddz (list (* 0.5 (+ (car a)(car b))) (* 0.5 (+ (cadr a)(cadr b))))))

(Defun cPhanloai()
  (setq ss1 (ssget (list (Cons 0 "LWPOLYLINE"))) i 0 dskq (list (list 0)))
  (Repeat (sslength ss1)
    (setq e1 (ssname ss1 i) i (1+ i) dt1 (vlax-curve-getArea e1)
          cv1 (vlax-curve-getDistAtParam e1 (vlax-curve-getEndParam e1))
          dsbo1 (acet-geom-vertex-list e1) dsbo2 '() j 0 nd (1- (length dsbo1))
    )
    (Repeat nd
      (setq dsbo2 (append dsbo2 (list (mid0 (nth j dsbo1) (nth (1+ j) dsbo1)))) j (1+ j))
    )
    (setq dsbo2 (append dsbo2 (list (car dsbo2))))
    (makepoly dsbo2)(setq e2 (entlast) dt2 (vlax-curve-getArea e2) cv2 (vlax-curve-getDistAtParam e2 (vlax-curve-getEndParam e2)))
    (command "Erase" e2 "")
    ;(print (list cv1 dt1 cv2 dt2))
    (If (setq dsbo (assoc nd dskq))
        (setq dsbo1 (append dsbo (list (list nd cv1 dt1 cv2 dt2 (car dsbo1))))
              dskq (subst dsbo1 dsbo dskq)
        )
        (setq dskq (append dskq (list (list nd cv1 dt1 cv2 dt2 (car dsbo1)))))
    )
  )
  (setq dskq (cdr dskq) dskq (vl-sort dskq '(lambda (x y)(< (car x) (car y)))) ds1 '() dsOK '() k 0)
  (Foreach pt dskq
    (setq cv1 (nth 1 pt) dt1 (nth 2 pt) cv2 (nth 3 pt) dt2 (nth 4 pt)
          d0 (nth 5 pt) ds1a (list (list 1 cv1 dt1 cv2 dt2 d0))
          dsbo (cdr (cdr (cdr (cdr (cdr (cdr pt))))))
    )
    (Foreach ptb dsbo
      (setq cv1b (nth 1 ptb) dt1b (nth 2 ptb) cv2b (nth 3 ptb) dt2b (nth 4 ptb) ni 0 OK nil d00 (nth 5 ptb))
      (Foreach pta ds1a
        (setq cv1a (nth 1 pta) dt1a (nth 2 pta) cv2a (nth 3 pta) dt2a (nth 4 pta) na (nth 0 pta) ni (1+ ni))
        (If (and (equal cv1b cv1a 1e-6)(equal dt1b dt1a 1e-6)(equal dt2b dt2a 1e-6)(equal cv2b cv2a 1e-6))
             ;(setq ptamoi (list (1+ na) cv1a dt1a cv2a dt2a d0) ptacu (list na cv1a dt1a cv2a dt2a (nth 5 pta)) OK 1 nb ni)
            (setq ptamoi (list (1+ na) cv1a dt1a cv2a dt2a (nth 5 pta)) ptacu (list na cv1a dt1a cv2a dt2a (nth 5 pta)) OK 1 nb ni)
        )
      )
      (If OK (setq ds1a (subst ptamoi ptacu ds1a))(setq ds1a (append ds1a (list (append (list 1) (cdr ptb))))))
    )
    (setq dsOK (append dsOK (list ds1a)))
  )
  (print dskq)(print "") (print dsOK)
  (command "Undo" "be") 
  (Foreach pt dsOK
    (Foreach pt1 pt (setq k (1+ k) i (car pt1)) (MakeTEXT3a (last pt1) (strcat (itoa k) "=" (itoa i) "")))
  )
  (command "Undo" "e")
)
(cPhanloai)

 

 

  • Like 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
1 giờ} trướ}c, Doan Van Ha đã nói:

Sao không tìm thấy lisp của Doan Nguyen Van để test thử vui hè?

Cái này Bạn ấy viết theo đơn đặt hàng của chủ đề tài đó Bạn.

  • Like 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
4 phút trước, DuongTrungHuy đã nói:

Cái này Bạn ấy viết theo đơn đặt hàng của chủ đề tài đó Bạn.

À thế thì thôi, rất ủng hộ điều đó.

  • Like 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
23 giờ trước, DuongTrungHuy đã nói:

 

 

Lisp của bạn cơ sở để khẳng định bằng nhau chưa có lý thuyết nào khẳng định >> không đúng.
Tôi phải mằn mò để vẽ chi li 2 hình phản biện. Bạn chỉ cần sửa 1E-6 thành 1E-3 trong lisp là 2 hình kèm file sẽ cho kết quả sai.

Nếu bỏ công vẽ chi li hơn nữa thì 1E-? nào cũng sai.

 

Equal Polygons.dwg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
1 giờ} trướ}c, Doan Van Ha đã nói:

Lisp của bạn cơ sở để khẳng định bằng nhau chưa có lý thuyết nào khẳng định >> không đúng.
Tôi phải mằn mò để vẽ chi li 2 hình phản biện. Bạn chỉ cần sửa 1E-6 thành 1E-3 trong lisp là 2 hình kèm file sẽ cho kết quả sai.

Nếu bỏ công vẽ chi li hơn nữa thì 1E-? nào cũng sai.

 

Equal Polygons.dwg

Chào Bạn!

 

Mình không hiểu ý Bạn lắm, sao phải sửa lại thông số Saiso. Mình chạy thì thấy là 2 hình này khác nhau là đúng vì chu vi khác nhau mà.

Cái 1: Chu vi 14.1090774

Cái 2: Chu vi 14.1091934

 

PS. Hì chỉ là bài toán nhỏ, vui nên mình mày mò tìm cách giải chứ không dựa vào lý thuyết nào cả, làm sao đơn giản nhất để đạt kết quả, chỉ mong sao đạt được ý nghĩa sử dụng trong thực tế.(Đưa ra thêm ràng buộc thì chặt chẽ nhưng phiền hà thêm). Bạn thông cảm cái không cơ sở nhé!

 

Bài toán này làm mình nhớ đến xưa Mình hay thiết kế cầu dàn bằng thép, những hình này là các bản mắt dàn phải thống kê, ghi kích thước chi tiết để thợ gia công.

À có Bạn đưa ra ý tỉ lệ các cạnh liên tiếp nhau, không biết Bạn đó xác định cạnh đầu tiên là cạnh nào nhỉ. Như 2 tam giác bằng nhau ABC và đi theo BCA thì có được không. 

 

Thân chào nhé!

Buổi trưa không ngủ để trả lời :) 

 

MoHinhLuoi Model (2).jpg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
18 phút trước, DuongTrungHuy đã nói:

Chào Bạn!

 

Mình không hiểu ý Bạn lắm, sao phải sửa lại thông số Saiso. Mình chạy thì thấy là 2 hình này khác nhau là đúng vì chu vi khác nhau mà.

Cái 1: Chu vi 14.1090774

Cái 2: Chu vi 14.1091934

 

PS. Hì chỉ là bài toán nhỏ, vui nên mình mày mò tìm cách giải chứ không dựa vào lý thuyết nào cả, làm sao đơn giản nhất để đạt kết quả, chỉ mong sao đạt được ý nghĩa sử dụng trong thực tế.(Đưa ra thêm ràng buộc thì chặt chẽ nhưng phiền hà thêm). Bạn thông cảm cái không cơ sở nhé!

 

Bài toán này làm mình nhớ đến xưa Mình hay thiết kế cầu dàn bằng thép, những hình này là các bản mắt dàn phải thống kê, ghi kích thước chi tiết để thợ gia công.

À có Bạn đưa ra ý tỉ lệ các cạnh liên tiếp nhau, không biết Bạn đó xác định cạnh đầu tiên là cạnh nào nhỉ. Như 2 tam giác bằng nhau ABC và đi theo BCA thì có được không. 

 

Thân chào nhé!

Buổi trưa không ngủ để trả lời :) 

 

 

Ý bác Hạ 2 hình này khác nhau, nhưng nếu chỉ xét yếu tố các cạnh mà không xét góc thì có thể vẽ chi li ra 2 hình khác nhau mà lisp nhận là giống nhau đó bác, ở đây đang thử với độ chính xác 1e-3, nên với độ chính xác 1e-6 cũng có thể vẽ ra 2 hình như vậy, đơn giản nhất là Scale 2 hình của bác Hạ nhỏ lại 0.001 thì test lisp 1e-6 sẽ thành 2 hình giống nhau.

Vì thế nên cần xét thêm các góc.

Ý tiếp theo bác hỏi có thể trả lời thế này:

Xét các cặp cạnh tương ứng bằng nhau không phải chọn cạnh đầu tiên, mà sẽ giữ nguyên 1 hình, sau đó lấy các cạnh liên tiếp của hình còn lại để so sánh: VD ABC, BCA, CAB...

nếu có 1 trường hợp đúng là đạt rồi, vì vậy mới nói sẽ mất thời gian chạy với hình nhiều cạnh

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
1 giờ} trướ}c, Doan Nguyen Van đã nói:

Ý bác Hạ 2 hình này khác nhau, nhưng nếu chỉ xét yếu tố các cạnh mà không xét góc thì có thể vẽ chi li ra 2 hình khác nhau mà lisp nhận là giống nhau đó bác, ở đây đang thử với độ chính xác 1e-3, nên với độ chính xác 1e-6 cũng có thể vẽ ra 2 hình như vậy, đơn giản nhất là Scale 2 hình của bác Hạ nhỏ lại 0.001 thì test lisp 1e-6 sẽ thành 2 hình giống nhau.

Vì thế nên cần xét thêm các góc.

Ý tiếp theo bác hỏi có thể trả lời thế này:

Xét các cặp cạnh tương ứng bằng nhau không phải chọn cạnh đầu tiên, mà sẽ giữ nguyên 1 hình, sau đó lấy các cạnh liên tiếp của hình còn lại để so sánh: VD ABC, BCA, CAB...

nếu có 1 trường hợp đúng là đạt rồi, vì vậy mới nói sẽ mất thời gian chạy với hình nhiều cạnh

À cám ơn Doan Nguyen Van nhé. Thì ra là vậy.

 

Hì ý là 2 hình có chu vi 1 cái là 12.0 và 1 cái 12.0000001 mà lại cho rằng 2 hình này bằng nhau. 

Thì đúng rồi cái này chạm đến sai số thì thua thật, mà thật, nếu có 2 hình như thế thì mình cũng cho = thôi vì không có ý nghĩa thực tế lắm.

Thực ra về số, khái niệm bằng nhau cũng chỉ có đối với số nguyên, còn với số thực thì khái niệm = chỉ là tương đối.

Mà Bạn nói xét thêm các góc nhỡ nó cũng sai nhau cách 0.0000001 mà mình cho nó = cũng sai. Thôi thì vậy là quá xui cho nó rồi cho nó = nhau thôi (đùa tí).

 

Còn ý bạn về cái cặp cạnh tương ứng, nếu Bạn làm vậy thì đúng dài mất thời gian thật.

Cám ơn Bạn nhé. Chúc công việc tốt đẹp.  

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
17 phút trước, DuongTrungHuy đã nói:

À cám ơn Doan Nguyen Van nhé. Thì ra là vậy.

 

Hì ý là 2 hình có chu vi 1 cái là 12.0 và 1 cái 12.0000001 mà lại cho rằng 2 hình này bằng nhau. 

Thì đúng rồi cái này chạm đến sai số thì thua thật, mà thật, nếu có 2 hình như thế thì mình cũng cho = thôi vì không có ý nghĩa thực tế lắm.

Thực ra về số, khái niệm bằng nhau cũng chỉ có đối với số nguyên, còn với số thực thì khái niệm = chỉ là tương đối.

Mà Bạn nói xét thêm các góc nhỡ nó cũng sai nhau cách 0.0000001 mà mình cho nó = cũng sai. Thôi thì vậy là quá xui cho nó rồi cho nó = nhau thôi (đùa tí).

 

Còn ý bạn về cái cặp cạnh tương ứng, nếu Bạn làm vậy thì đúng dài mất thời gian thật.

Cám ơn Bạn nhé. Chúc công việc tốt đẹp.  

Định bàn thêm về vấn đề này nhưng thôi, đi hơi xa so với ban đầu rồi ^^, chúc bác ngày tốt lành 

  • Like 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
1 giờ trước, Doan Nguyen Van đã nói:

Ý bác Hạ 2 hình này khác nhau, nhưng nếu chỉ xét yếu tố các cạnh mà không xét góc thì có thể vẽ chi li ra 2 hình khác nhau mà lisp nhận là giống nhau đó bác, ở đây đang thử với độ chính xác 1e-3, nên với độ chính xác 1e-6 cũng có thể vẽ ra 2 hình như vậy, đơn giản nhất là Scale 2 hình của bác Hạ nhỏ lại 0.001 thì test lisp 1e-6 sẽ thành 2 hình giống nhau.

Vì thế nên cần xét thêm các góc.

Ý tiếp theo bác hỏi có thể trả lời thế này:

Xét các cặp cạnh tương ứng bằng nhau không phải chọn cạnh đầu tiên, mà sẽ giữ nguyên 1 hình, sau đó lấy các cạnh liên tiếp của hình còn lại để so sánh: VD ABC, BCA, CAB...

nếu có 1 trường hợp đúng là đạt rồi, vì vậy mới nói sẽ mất thời gian chạy với hình nhiều cạnh

Doan nói đúng 100% rồi.
Ý tôi muốn nói với DuongTrungHuy là 2 hình đó khác hoắc mà so sánh vẫn bằng nhau (nếu sửa sai số trong lisp lại 1E-3 hoặc scale 1E-3). Lý do là bạn bỏ qua góc khi so sánh nên kết quả mới vậy, chứ không phải "ép" cho bài toán của bạn phải sai.

Ý chung: do những bài toán này mang tính thực tế nên số polygon thường không quá lớn, vì vậy dù có xét nhiều vòng lặp thì cũng không ảnh hưởng lắm.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
46 phút trước, DuongTrungHuy đã nói:

À cám ơn Doan Nguyen Van nhé. Thì ra là vậy.

 

Hì ý là 2 hình có chu vi 1 cái là 12.0 và 1 cái 12.0000001 mà lại cho rằng 2 hình này bằng nhau. 

Thì đúng rồi cái này chạm đến sai số thì thua thật, mà thật, nếu có 2 hình như thế thì mình cũng cho = thôi vì không có ý nghĩa thực tế lắm.

Thực ra về số, khái niệm bằng nhau cũng chỉ có đối với số nguyên, còn với số thực thì khái niệm = chỉ là tương đối.

Mà Bạn nói xét thêm các góc nhỡ nó cũng sai nhau cách 0.0000001 mà mình cho nó = cũng sai. Thôi thì vậy là quá xui cho nó rồi cho nó = nhau thôi (đùa tí).

 

Còn ý bạn về cái cặp cạnh tương ứng, nếu Bạn làm vậy thì đúng dài mất thời gian thật.

Cám ơn Bạn nhé. Chúc công việc tốt đẹp.  

Ví dụ như 2 hình này thì theo cách lisp của bạn là bằng nhau?

 

new block.dwg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
17 phút trước, ngokiet đã nói:

Ví dụ như 2 hình này thì theo cách lisp của bạn là bằng nhau?

 

new block.dwg

 

Ui Bạn dùng cad mới quá. Mình cad 2014.

Bạn chụp cái hình mình xem cũng được.

Chào nhé!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
5 giờ trước, ngokiet đã nói:

Ví dụ như 2 hình này thì theo cách lisp của bạn là bằng nhau?

 

new block.dwg

Hi. Chào bạn ngokiet và bác Doan Van Ha.

Rất cám ơn đã test chương trình của mình nhé, cũng là giải trí thôi mà.

Đúng là nó sai thật. Nhưng bây giờ mình chỉ cần đừng lấy trung điểm, cho nó bất đối xứng thì lại tạm ổn đó các Anh.

 

Sửa lại hàm Mid0, Thêm hàm Cal3

 

(Defun Cal3 (d0 d1 d0d1) (setq diemmoi (Polar d0 (angle d0 d1) d0d1)))
(Defun Mid0(A B) (setq hs 0.547812 kc (distance A B) ddz (cal3 A B (* hs kc))))

 

Đổi hàm Mid0 thay vì trung điểm k=0.5 bây giờ k=0.547812 là OK 

 

Hai danh sách thông số lần lượt là (chuvi = diện tích = chuviphụ = diện tíchphụ)

(181.333 1390.59 130.292 1025.24)
(181.333 1390.59 130.284 1025.24)

Như vậy là 3 thông số kia bằng nhau nhưng thông số chuviphụ khác nhau nên 2 đa giác khác nhau. Cũng hú vía thật :)

Thật ra mình cũng muốn thêm tham số góc nhưng thấy lấy góc rườm rà quá nên tránh đi. Khi lập cũng hơi ngờ ngợ sẽ không bẫy hết lỗi.

 

Chào nhé!

Các Bạn test nếu thấy còn lỗi nếu được cho mình biết nhé. Hì đến khi nào thất bại với ý tưởng này thì thôi. Vì Bạn Doan Nguyen Van đã giải quyết tốt rồi. 

 

À Mình cũng xem lại thì hình như có 1 thông số hình dạng khác dễ dàng hơn. Đó là trọng tâm của đa giác, gọi trọng tâm ở đây là qui ước, nó là điểm trung bình cọng của tất cả các đỉnh Poly, sao đó ta tính trung bình cọng khoảng cách từ điểm trọng tâm đó đến tất cả các đỉnh. Hai đa giác lúc này gọi là bằng nhau khi có 4 thông số (số cạnh - Chu vi - Diện tích - trung bình cọng kh.cách từ trọng tâm) bằng nhau, còn lại là khác. :)

new block (1) (1) (1) Model (1).jpg

PhanLoai.LSP

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

×