2015-10-06 28 views
9

Đây là câu hỏi đầu tiên tôi từng hỏi ở đây! Xin lỗi trước nếu tôi đã làm sai nó bằng cách nào đó.Hiện tượng lạ với mặt phẳng three.js

Tôi đã viết một chương trình xếp chồng lên các hình cầu trong ba.js.

Mỗi hình cầu bắt đầu với các tọa độ x và z được tạo ngẫu nhiên (trong giới hạn nhất định) và toạ độ y cao trên mặt đất. Tôi tạo ra các tia từ mỗi đỉnh của hình cầu để xem nó có thể rơi bao xa trước khi nó cắt với một lưới hiện có.

Đối với mỗi hình cầu, tôi kiểm tra ở 80 vị trí xz ngẫu nhiên khác nhau, xem vị trí có thể rơi xa nhất, sau đó thả 'thả' vào vị trí đó.

này được thiết kế để tạo ra tháp bong bóng như thế này:

image of regular bubble tower

Tuy nhiên, tôi đã nhận thấy rằng khi tôi làm cho bán kính bong bóng rất nhỏ và kích thước cơ bản của tháp lớn, điều này xảy ra:

image of bubbles clustered towards the edges of square

Nếu tôi xoay recursions xuống từ 80, hiệu ứng này là ít rõ ràng. Vì một lý do nào đó, ba.js dường như nghĩ rằng các quả cầu có thể rơi xa hơn ở các góc của hình vuông cơ sở. Nguồn gốc là chính xác ở trung tâm của hình vuông cơ sở - có lẽ điều này là có liên quan. Khi tôi giao diện điều khiển ghi lại tất cả các khoảng cách rơi tôi nhận được từ raycaster, chúng thực sự lớn hơn xa hơn bạn nhận được từ trung tâm của hình vuông ... nhưng chỉ ở vị trí thập phân thứ 11 hoặc 12.

Đây không phải là vấn đề tôi đang cố gắng giải quyết (tôi chỉ có thể làm tròn khoảng cách đến vị trí thập phân thứ 10 gần nhất trước khi tôi chọn số lớn nhất), nhưng điều tôi rất tò mò. Có ai biết tại sao điều này xảy ra? Có ai đi qua một cái gì đó tương tự như trước đây?

EDIT:

tôi sửa mã của tôi để chuyển tất cả mọi thứ để nguồn gốc không còn ở trung tâm của quảng trường cơ sở:

image of edited code

Như vậy tôi thích hợp trong suy nghĩ ... hiện tượng này là một cái gì đó để làm với khoảng cách từ nguồn gốc, chứ không phải là bất cứ điều gì liên quan đến bề mặt mà trên đó các quả bóng đang rơi?

+2

Tôi không biết gì về three.js, nhưng âm thanh này giống như vấn đề về độ chính xác của dấu phẩy động. Câu hỏi đầu tiên tuyệt vời btw, chào mừng. – Rotem

+0

Cảm ơn bạn! Đây không phải là điều tôi biết nhiều về - bạn có thể liên kết tôi với bất kỳ tài nguyên nào tốt để giải thích tính chính xác của dấu phẩy động từ mặt đất không? – Martha

+0

Bạn có thể thử tăng thứ tự độ lớn bạn đang sử dụng cho các đơn vị của mình. – Blaise

Trả lời

0

Thật vậy, mẫu bạn nhìn thấy là chính xác vì các góc và cạnh của đáy tháp của bạn xa nhất từ ​​gốc nơi bạn đang thả các quả bóng. Bạn đang tạo một hình tam giác bên phải (xem hình bên dưới), trong đó "chân" dọc là dòng từ gốc mà bạn đang thả các quả bóng xuống điểm ngay dưới đáy lưới (tại góc bên phải để tầng - do đó tên, tam giác vuông). Giả thuyết hypotenuse luôn là chân dài nhất của tam giác vuông, và các tia sáng của bạn xuất phát từ điểm ngay bên dưới nguồn gốc, càng dài thì sẽ càng có nhiều thuật toán, và thuật toán của bạn càng có lợi cho khoảng cách dài hơn (bất kể phân số).

Tăng kích thước của cơ sở tháp sẽ phóng đại hiệu ứng này vì các phép đo hypotenuse giờ đây có thể phát triển lớn hơn.Giảm kích thước của các quả bóng cũng sẽ có lợi cho hoa văn bạn đang thấy, vì bây giờ mỗi quả bóng không chiếm nhiều không gian, và do đó các phép đo xa ở các góc sẽ không lấp đầy nhanh như chúng với các quả bóng lớn hơn sao cho bây giờ nhiều quả bóng sẽ tụ tập ở các cạnh trước khi điền vào phần còn lại của không gian.

Di chuyển nguồn gốc rơi của bạn sang một bên hoặc bên kia tạo khoảng cách dài hơn (cạnh huyền) cho các cạnh và góc đối diện, để các quả bóng sẽ lấp đầy các vị trí ở xa trước.

Lý do bạn thấy ít ảnh hưởng khi bạn giảm kích thước mẫu từ 80 xuống 20, là chỉ đơn giản là ít cơ hội phát hiện những vị trí xa hơn mà quả bóng có thể rơi (trò chơi tỷ lệ cược).

Một tam giác vuông:

enter image description here

Một back-of-the-khăn ăn phác thảo:

enter image description here

+0

Xin chào, Cảm ơn bạn đã nhập - tuy nhiên, đây không phải là vấn đề. Tôi di chuyển hình cầu đến một chuỗi các vị trí x, z ngẫu nhiên trên mặt đất và kiểm tra khoảng cách trực tiếp xuống dưới, tôi không giữ cho hình cầu tĩnh và trung tâm và kiểm tra khoảng cách đến các vị trí x, z khác nhau trên mặt đất. – Martha

+1

@Martha - Hmmm. Nó sẽ là tốt nhất nếu bạn có thể cung cấp một số đoạn mã hoặc một fiddle để chúng ta có thể thấy chính xác nó hoạt động như thế nào – gromiczek

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