Có bất kỳ kích thước gạch hex trong đó cả chiều rộng và chiều cao là số nguyên?


8

Tôi đang cố gắng tìm ra chiều rộng và chiều cao tối ưu (tính bằng pixel) để bắt đầu xây dựng các hình lục giác để phát triển trò chơi. Sở thích của tôi là dành cho lưới hex "phẳng đứng đầu", nhưng toán học tương tự cho cả hai.

Tôi đang tìm kiếm một kích thước ô "tối ưu" cho phép cả chiều rộng và chiều cao của ô vuông là một số pixel được làm tròn, dựa trên thực tế là như vậy height = sqrt(3)/2 * width.

Kỹ năng toán học của tôi là hầu như không tồn tại, tôi chỉ chạy một kịch bản brute force rằng ran thông qua độ rộng 1-1024 và không đưa ra một giá trị duy nhất cho wnơi hlà một số nguyên. Đây đúng là tình trạng đó phải không? Làm thế nào để bất cứ ai tạo ra các hình lục giác hoàn hảo pixel nếu không có kích thước chiều rộng và chiều cao thậm chí có thể chứa tỷ lệ khung hình lục giác hoàn hảo?


7
Điều này không quan trọng đối với trò chơi. Đó là một hình thức của sự trì hoãn. Nếu nó rất quan trọng với bạn, hãy tìm kiếm trận đấu gần nhất thay vì phù hợp thực tế.
AturSams

1
Bạn nói "pixel", phải không? Vì vậy, bạn đang nói về lập trình? Trong nội bộ, bạn sẽ làm việc với ints để nói bạn đang ở trong ô nào (cần có tài nguyên trực tuyến về lưới hex) và việc vẽ các dòng sẽ được thực hiện bởi máy tính. (Hãy suy nghĩ: Bạn cũng không thể vẽ một vòng tròn.)
leewz

1
Nếu bạn là một loại tò mò thì bằng mọi cách hãy đọc nó trong đó có dòng chữ "Chứng minh bằng dòng dõi vô hạn". Chỉ cần Ctrl + f để tìm thấy nó.
AturSams

1
@Zehelvion haha ​​và NGAY BÂY GIỜ Tôi biết ý của bạn là "chần chừ" - Tôi chỉ dành 2 giờ cuối cùng để cạo các số vô lý yak và KHÔNG tạo ra trò chơi dựa trên hình lục giác.
Tom Auger

1
Đó phải là một yak, vì lông cừu của nó cứ lặp đi lặp lại khi được biểu diễn một cách dứt khoát và không bao giờ lặp lại cùng một mô hình (thực sự). Tôi không nhớ tài liệu tham khảo đó từ Ren & Kích thích; thật tốt khi biết điều đó :)
AturSams

Câu trả lời:


16

Số is3 là số vô tỷ và theo định nghĩa, số vô tỷ không thể được sử dụng làm tỷ lệ giữa hai số tự nhiên (số nguyên) như số pixel.

Tuy nhiên, không có quy tắc nào nói rằng bạn phải sử dụng các hình lục giác lý tưởng trong các ô trò chơi của mình. Nếu bạn ước tính gần đúng và tránh mọi tính toán sai lầm có thể xảy ra, dù sao bạn cũng có thể làm được với toán số nguyên, bạn có thể có được một sản phẩm đẹp mắt trong khi làm việc với các số dễ dàng phía sau hậu trường (nếu bạn có thể gọi 100 và 173 dễ dàng để làm việc với).


Đẹp, nhưng 3 là số vô tỷ sqrt(3)=1.7320508075688772là (nói) a double, và chắc chắn có thể được biểu thị bằng tỷ lệ số nguyên (138907099/80198051).
Sean D

@SeanD Bất kỳ số nào được biểu thị là số kép hoặc số float là số hữu tỷ. Tôi không thấy bạn đang đi đâu với điều này?
AturSams

NaNs là doubles, nhưng họ không hợp lý. Câu trả lời khẳng định " sqrt(3)là một số vô tỷ" là sai trong ngữ cảnh lập trình, tôi đã cố gắng phân biệt giữa số máy tính và số thực.
Sean D

@SeanD Điểm hay, máy tính lưu trữ xấp xỉ hợp lý các số vô tỷ. Trong thực tế, đối với hầu hết các số hữu tỷ, máy tính cũng lưu trữ một xấp xỉ hợp lý gần đúng. Vì vậy, bạn có thể có một hình lục giác "hoàn hảo" về độ chính xác của máy tính hạn chế. Chúng ta chỉ có thể lưu trữ 2 ^ (numOfBits) các số có thể có trong bộ nhớ và có vô số các số hữu tỷ trong khoảng 0 .. 1, chứ đừng nói đến các số vô tỷ trong đó có số lượng vô hạn lớn hơn.
AturSams

2
Cảm ơn vì đã định vị ký tự for cho tôi; Tôi sẽ kết hợp nó vào câu trả lời của mình để chúng ta không cần phải tranh luận về độ chính xác của dấu phẩy động.
Seth Battin

4

Chỉ trong trường hợp bất cứ ai quan tâm:

Giả sử sqrt (3) là hợp lý:

  1. Do đó, phải có hai số nguyên absao cho a/b= sqrt (3)
  2. Chúng tôi giả sử những con số này là số nguyên tố, nếu chúng có một yếu tố chung, chúng tôi chia cho nó tạo ra một cặp số nguyên tố ab
  3. Chúng tôi biết điều đó (a/b)^2 = 3và do đó a^2 = 3 * b^2.
  4. 3 * b^2chia hết cho 3 b^2là tích phân và do đó a^2cũng chia cho 3.
  5. Không có số nguyên không vuông là 3, nhưng chúng không có. do đó, nó đi theo achính nó là chia hết cho 3. Hãy xác định k = a/3.
  6. a^2 = (3k)^2 = 3 * b^2=> 9 * k^2 = 3 * b^2=> 3 * k^2 = b^2có nghĩa blà cũng chia 3.
  7. Điều này mâu thuẫn với giả định cơ sở rằng chúng là các số nguyên cùng nhau.

Tín dụng cho wikipedie để làm mới bộ nhớ của tôi.


Khoe khoang! ;-) +1 để làm mới bản ghi nhớ của tôi
Pieter Geerkens

@PieterGeerkens :) cảm ơn, tôi đã nhớ được một nửa số đó (từ Giải tích 1) nhưng sau đó thấy nó được giải thích rất tốt trong wiki.
AturSams

1

Rất nhiều câu trả lời phức tạp ở đây. Nếu bạn đang tìm kiếm câu trả lời 'Đóng đủ', hãy thử 7x8. Không phải là một hình lục giác hoàn hảo, nhưng đủ gần để hầu hết mọi người sẽ không nhận thấy sự khác biệt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.