Đối với điểm thống nhất trên một vòng tròn hoặc hình nón có bán kính R và chiều cao/độ cao H:
generate:
angle= uniform_random(0,2*pi)
value= uniform_random(0,1)
in either case, let:
r= R * sqrt(value)
then (using separate random numbers for each):
circle_point= point3d(r*cos(angle), r*sin(angle), H)
or:
cone_point= point3d(r*cos(angle), r*sin(angle), r*H)
Lưu ý rằng nếu bạn muốn một căn cứ trên nón của bạn, bạn sẽ cần phải làm điều đó một cách riêng biệt từ hình dạng cong. Để đảm bảo mật độ của các điểm giống nhau đối với các phần khác nhau, một cách dễ dàng là tính toán các khu vực của các bộ phận và tạo ra một số điểm tỉ lệ cho mỗi phần.
Giá trị sqrt (giá trị) là điều đảm bảo mật độ điểm ngẫu nhiên của bạn là đồng nhất. Như các câu hỏi khác đã đề cập, bạn muốn phân phối hình tam giác tam giác cho việc này; lấy sqrt() biến phân bố đồng đều trên [0,1) thành hình tam giác.
Đối với hình trụ, bạn không muốn sqrt(); phần cong là:
cylinder_point= point3d(R*cos(angle), R*sin(angle), H*value)
Dường như tỷ lệ sẽ tăng từ 1,5 đến 0,5. Bạn có thể muốn tỷ lệ = (max_y-y)/nón-> Chiều cao() thay thế. – comingstorm
Ngoài ra, để ngăn chặn các điểm của bạn bị chồng lên xung quanh đỉnh, bạn muốn y = (max_y-min_y) * (1-sqrt (RandomNumber())) + min_y – comingstorm
trông giống như câu hỏi trong EDIT của bạn đã được trả lời. Bạn có thể làm sạch nó, hoặc thêm một EDIT để chỉ ra rằng nó đã được trả lời? – brainjam