Suy nghĩ đầu tiên của bạn có thể là tìm cách xoay vòng bản đồ một đối tượng này sang đối tượng khác nhưng đây là một chủ đề rất phức tạp ... và không thực sự cần thiết! Bạn không hỏi làm thế nào để phù hợp nhất với hai, bạn chỉ cần hỏi xem họ có giống nhau hay không.
Đặc trưng cho mô hình của bạn bằng danh sách tất cả khoảng cách điểm giữa. Sắp xếp danh sách theo khoảng cách đó. Bây giờ so sánh danh sách cho từng đối tượng. Chúng phải giống hệt nhau, vì khoảng cách giữa các điểm không bị ảnh hưởng bởi dịch hoặc xoay.
Ba vấn đề:
1) Điều gì nếu số lượng điểm lớn, đó là một danh sách lớn các cặp (N * (N-1)/2). Trong trường hợp này, bạn có thể chọn chỉ giữ lại những cái dài nhất, hoặc thậm chí tốt hơn, giữ 1 hoặc 2 cái dài nhất cho mỗi đỉnh sao cho mỗi phần của mô hình của bạn có một số đóng góp.Giảm thông tin như thế này tuy nhiên thay đổi vấn đề là xác suất và không xác định.
2) Điều này chỉ sử dụng các đỉnh để xác định hình dạng chứ không phải cạnh. Điều này có thể là tốt (và trong thực tế sẽ được), nhưng nếu bạn mong đợi để có con số với đỉnh giống hệt nhau nhưng các cạnh kết nối khác nhau. Nếu vậy, kiểm tra độ tương tự đỉnh đầu tiên. Nếu điều đó trôi qua, sau đó gán một nhãn duy nhất cho mỗi đỉnh bằng cách sử dụng khoảng cách được sắp xếp đó. Cạnh dài nhất có hai đỉnh. Đối với mỗi đỉnh ĐÚNG, hãy tìm đỉnh có cạnh dài nhất (còn lại). Dán nhãn đỉnh đầu tiên 0 và đỉnh tiếp theo 1. Lặp lại các đỉnh khác theo thứ tự, và bạn sẽ gán các thẻ được dịch chuyển và xoay độc lập. Bây giờ bạn có thể so sánh chính xác các cạnh trong đối tượng 1 giữa hai đỉnh, có một cạnh tương ứng giữa hai đỉnh giống nhau trong đối tượng 2) Lưu ý: điều này bắt đầu trở nên phức tạp nếu bạn có nhiều khoảng cách interpoint giống nhau và do đó bạn cần sự so sánh của bộ tách để làm cho các bài tập ổn định và độc đáo.
3) Có khả năng hai số có chiều dài cạnh giống hệt nhau nhưng chúng không giống nhau .. điều này đúng khi một đối tượng là hình ảnh phản chiếu của đối tượng kia. Điều này khá khó chịu để phát hiện! Một cách để làm điều đó là sử dụng bốn điểm không đồng phẳng (có lẽ là các điểm được gắn nhãn 0 đến 3 từ bước trước) và so sánh "độ" của hệ tọa độ mà chúng xác định. Nếu bàn tay không khớp, các vật thể là hình ảnh phản chiếu.
Lưu ý danh sách các khoảng cách cho phép bạn dễ dàng từ chối các đối tượng không giống hệt nhau. Nó cũng cho phép bạn thêm chấp nhận "mờ" bằng cách cho phép một số lượng lỗi nhất định trong các lệnh. Có lẽ lấy sự khác biệt bình phương gốc giữa hai danh sách là một "biện pháp tương tự" sẽ hoạt động tốt.
Chỉnh sửa: Dường như vấn đề của bạn là đám mây điểm không có cạnh. Sau đó, các vấn đề gây phiền nhiễu của thư từ cạnh (# 2) thậm chí không áp dụng và có thể được bỏ qua! Tuy nhiên, bạn vẫn phải cẩn thận với vấn đề về hình ảnh gương.
Tôi biết một số cách bạo lực để thực hiện việc này, muốn xem liệu có cách nào dễ dàng hơn không. – stevedbrown
Sự cố thú vị. Cách tôi giải quyết vấn đề nếu tôi chỉ kiểm tra các bộ giống hệt nhau là tìm hai điểm xa nhất và làm cho trục x, sau đó tìm điểm xa nhất từ trục đó và thực hiện bình thường từ trục x đến điểm đó trục y. Nhưng điều đó có thể dễ dàng thất bại đối với các bộ "tương tự". – Nosredna
@Nosredna: loại bình thường này giống như tôi tìm thấy trong một bài báo về tầm nhìn của robot. Sự khác biệt duy nhất là nó được đánh giá cho mỗi cặp điểm bởi vì bạn có thể có sự bao gồm. Một khi bạn bình thường hóa và nhận được tất cả các cặp, bạn có thể lượng tử hóa và đánh giá sự giống nhau, với một kỹ thuật "bỏ phiếu" để đồng ý nếu mọi thứ phù hợp đúng. –