Tôi đang cố gắng tìm ra một hàm lặp tạo ra tọa độ xyz cho lưới lục giác. Toán học chưa bao giờ dễ dàng đối với tôi (tôi không thông minh lắm!) Và vấn đề này khiến tôi bối rối. Với một vị trí hex bắt đầu (nói 0,0,0 cho simplicty) Tôi muốn để tính toán tọa độ cho mỗi "vòng" liên tiếp của hình lục giác, như minh họa ở đây:Tạo tọa độ tam giác/lục giác (xyz)
Cho đến nay, tất cả tôi đã quản lý để đưa ra là thế này (ví dụ trong javascript):
var radius = 3
var xyz = [0,0,0];
//for each ring
for (var i = 0; i < radius; i++) {
var tpRing = i*6;
var tpVect = tpRing/3;
//for each vector of ring
for (var j = 0; j < 3; j++) {
//for each tile in vector
for(var k = 0; k < tpVect; k++) {
xyz[0] = ???;
xyz[1] = ???;
xyz[2] = ???;
console.log(xyz);
}
}
}
tôi biết mỗi vòng bao gồm sáu điểm nhiều hơn so với trước đó và mỗi 120 ° vector chứa một điểm bổ sung cho mỗi bước từ trung tâm. Tôi cũng biết rằng x + y + z luôn = 0. Nhưng làm thế nào tôi có thể tạo ra một danh sách các tọa độ mà theo trình tự này:
0,0,0
0,-1,1
1,-1,0
1,0,-1
0,1,-1
-1,1,0
-1,0,1
0,-2,2
1,-2,1
2,-2,0
2,-1,-1
2,0,-2
1,1,-2
0,2,-2
-1,2,-1
-2,2,0
-2,1,1
-2,0,2
-1,-1,2
Tôi có lẽ sẽ được xấu hổ bởi sự đơn giản của câu trả lời nhưng xin đừng để điều đó ngăn cản bạn đóng góp! ;) Như tôi đã nói, tôi không thông minh lắm!
Rất cám ơn,
JS
Chỉnh sửa nhỏ.Mỗi vòng chứa ** 6 * k ** điểm, hoặc ** 6 * (k-1) ** điểm nhiều hơn điểm trước, trong đó k là chỉ số vòng được bắt đầu từ số không. –