2017-11-09 16 views
6

Trước hết, tôi xin lỗi nếu có giải pháp cho điều này ở đâu đó, nhưng tôi đã thực hiện rất nhiều việc đào bới thông qua tài liệu Three.js và A-Frame là Stack Overflow và không tìm thấy những gì tôi đang tìm kiếm.Hình chữ nhật phù hợp nhất từ ​​tập hợp các điểm Coplanar trong Three.js

Điều tôi muốn làm là tạo một mặt phẳng A-Frame phù hợp nhất từ ​​một tập hợp các Vector3 mà tôi đã biết là đồng phẳng. Điều này có thể dễ dàng thực hiện nếu góc của mặt phẳng là bội số của 90, nhưng bất kỳ thứ gì khác và thuật toán .setFromPoints() cho Box3 không hoạt động theo cách tôi cần.

Chuyển đổi từ Three.js sang A-Frame Tôi rất có thể tự xử lý bản thân, nhưng nếu có ai muốn giải quyết rằng chúng được hoan nghênh hơn. Tôi chỉ cần tạo một mặt phẳng hình chữ nhật thực sự có ý nghĩa.

Về cơ bản, tôi muốn tạo ra một thuật toán mà thực hiện điều này:

Tạo máy bay in đậm, chứ không phải là hộp nhẹ/máy bay với quá nhiều khoảng trống lãng phí.

Drawing Explanation

Tôi không muốn tạo hình học tùy chỉnh mà hoàn toàn phù hợp các điểm, mà tôi đã làm. Tôi thực sự chỉ muốn một chiếc máy bay A-Frame không có gì khác ngoài chiều cao, chiều rộng, vị trí và thuộc tính xoay vòng. Tôi hiểu điều này là không chính xác, nhưng nó là lý tưởng hơn cho những gì tôi đang làm việc trên.

+0

@Soronbe Hiệu suất tốt rõ ràng là được ưu tiên, nhưng không bắt buộc. Chỉ cố gắng để có được những thứ để làm việc. Và số lượng đỉnh trong bất kỳ tập nào cho trước thường là khoảng 10-15, nhưng nhiều nhất là 405. – Roberto

Trả lời

1

Đầu tiên hãy tìm dòng tốt nhất đi qua các điểm. Điều này được gọi là "phù hợp với đường thẳng", như ở đây: http://stackoverflow.com/questions/2352256/fit-a-3d-line-to-3d-point-data-in-java, nên dễ dàng thực hiện điều này theo hai chiều thay vì ba. Xem thêm ở đây: https://en.wikipedia.org/wiki/Deming_regression Đường thẳng cho bạn góc, minmax của khoảng cách vuông góc của các điểm là chiều cao của hình chữ nhật, minmax của các vị trí của các điểm vuông góc với đường thẳng làm cho chiều rộng của hình chữ nhật. Hoặc bạn xoay tất cả các điểm theo góc negativ của đường thẳng và chỉ cần tính giá trị minmax của các thành phần x và y của các điểm cho chiều rộng và chiều cao của hình chữ nhật.

1

OK, có thể câu trả lời trước của tôi khó thực hiện. Đây là một ý tưởng khác: tính toán vỏ lồi của các điểm của bạn (https://en.wikipedia.org/wiki/Graham_scan cung cấp một thuật toán đơn giản và hiệu quả với mã giả). các điểm bên trong không liên quan. Hình chữ nhật tối ưu phải trùng với ít nhất một trong các cạnh của thân lồi. Với tất cả các góc của các cạnh của vỏ lồi tính toán kích thước của hình chữ nhật với góc đó. Sau đó đi tối thiểu.

Các vấn đề liên quan