Dùng VBA tính khoảng cách giữa các cọc

Liên hệ QC

tranvanhung2009

Thành viên hoạt động
Tham gia
1/3/11
Bài viết
128
Được thích
18
Xin chào các anh chị trong nhóm!
Mình cần sự giúp đỡ của mọi người tạo 1 code để tính khoảng cách các vị trí trong 1 đài cọc.
Ở trong file excell mình đính kèm có kết quả tính và sơ đồ tính.
Mong được mọi người giúp đỡ!
 

File đính kèm

  • Code tinh khoang cach cach coc trong nhom.xlsm
    36.9 KB · Đọc: 24
Vậy thì mình dùng thử ý:
+ Đánh số cọc từ 1 đến n
+ Tính số tổ hợp chập 2 của n số cọc
+ Từ các tổ hợp này tính ra khoảng cách d = sqrt [(x1-x2)^2+(y1-y2)^2]
+ Tìm lại các cặp có tên theo cọc đang xét.
Nghe trình bày phức tạp, chắc phải lên vài trăm cọc thì mới có ý nghĩa.
 
Upvote 0
Tôi nhớ ra rồi, ma trận này cũng đối xứng qua đường chéo phải, như vậy khi tính cột, tính từ đường chéo trái (đường chéo zê rô) xuống tới hết cột. Chỉ cần tính đến tâm điểm nó là có thể "gấp chéo" nó sang phần còn lại.
Tuy nhiên tôi chứ tìm ra công thức "gấp chéo" cho nên loay hoay một hồi quên mất.

Vậy thì mình dùng thử ý:
+ Đánh số cọc từ 1 đến n
+ Tính số tổ hợp chập 2 của n số cọc
+ Từ các tổ hợp này tính ra khoảng cách d = sqrt [(x1-x2)^2+(y1-y2)^2]
+ Tìm lại các cặp có tên theo cọc đang xét.
Nghe trình bày phức tạp, chắc phải lên vài trăm cọc thì mới có ý nghĩa.
Vậy chứ bạn nghĩ mấy bài code trên kia người ta làm cái gì?
 
Upvote 0
Vậy thì mình dùng thử ý:
+ Đánh số cọc từ 1 đến n
+ Tính số tổ hợp chập 2 của n số cọc
+ Từ các tổ hợp này tính ra khoảng cách d = sqrt [(x1-x2)^2+(y1-y2)^2]
+ Tìm lại các cặp có tên theo cọc đang xét.
Nghe trình bày phức tạp, chắc phải lên vài trăm cọc thì mới có ý nghĩa.
1 Đài cọc mà có vài trăm cọc chắc có lẽ là công trình to lớn lắm
 
Upvote 0
1 Đài cọc mà có vài trăm cọc chắc có lẽ là công trình to lớn lắm
Nghiên cứu để tìm ra quy luật về độ lún giữa từng cọc thôi Thầy bằng phương pháp thủ công là tính theo các công thức đại số có sẵn.
Chứ những công trình lớn nếu dự đoán tính toán độ lún thì mọi người sẽ thường dùng phần mềm Plaxis 3D.
 
Upvote 0
1 Đài cọc mà có vài trăm cọc chắc có lẽ là công trình to lớn lắm
Đập Oosterscheldekering, một trong những đập lớn nhất ở Hà lan, dùng 65 cọc.
Nhưng mỗi cọc của nó là 7000 mét khối bê tông, cao 30-38 mét và nặng 18000 tấn. Đây là cột đào đất rồi chôn chứ đóng đâu có nổi :p
 
Upvote 0
Tôi nhớ ra rồi, ma trận này cũng đối xứng qua đường chéo phải, như vậy khi tính cột, tính từ đường chéo trái (đường chéo zê rô) xuống tới hết cột. Chỉ cần tính đến tâm điểm nó là có thể "gấp chéo" nó sang phần còn lại.
Tuy nhiên tôi chứ tìm ra công thức "gấp chéo" cho nên loay hoay một hồi quên mất.


Vậy chứ bạn nghĩ mấy bài code trên kia người ta làm cái gì?
Em có đọc bài của anh phía trên, code của anh hay và phù hợp trong trường hợp này.
Suy nghĩ của em chỉ khác cái là thêm cái không đối xứng cho đường chéo, chỉ loại những cái trùng nhau.
Vì móng thì có thể có hình dạng đa giác và không nhất thiết phải đối xứng.
 
Upvote 0
... chỉ loại những cái trùng nhau.
Vì móng thì có thể có hình dạng đa giác và không nhất thiết phải đối xứng.
Số toạ độ A:B cọng với B:A cho ra một bảng tra vuông. Bất cứ cách sắp xếp cọc theo đa giác gì.
Có toạ độ thì tính được khoảng cách, căn bản hình học giải tích. Khoảng cách bằng căn hai của tổng bình phương hai trị tung và hoành.
Nếu chỉ tính trâu bò thế thôi thì bài này chả có gì phải suy nghĩ nhiều.
Bài toán tính trùng nhau rất phức tạp. Hiệu quả hơn với cách lập trình hướng đối tượng. Mỗi cọc là một đối tượng tự dùng đệ quy để tìm những cọc chung quanh, đồng thời nhận ra các toạ độ tương tự đã tính rồi, chỉ cần cóp py lại.

Hiện nay, phương pháp tính toạ độ tương tự là lập một bảng tra, điển hình là bài #18. Chưa có cách giải khác. Tuy răng nếu tôi viết thì tôi sẽ theo cách tính đến đâu dò bảng tra và chép hay thêm đến đó.

Ở bài này chỉ nói dạng đặc biệt là dạng xếp cọc theo chữ nhật. Vì hình chữ nhật có 4 trục đối xứng cho nên ta có thể quy rằng chỉ cần tính một phần tư và dùng phép chiếu ảnh qua hai đường chéo để ghi ba phần tư còn lại. Phép chiếu ảnh tuy dễ tính nhưng thuật toán khác nhau.
 
Upvote 0
Web KT
Back
Top Bottom