Böyle bir üçgen izometrik ızgara vardır:

Benim kodunda, üçgenler sütunlara göre gruplandırılmıştır.
Ben fareyi olarak, fare koordinatları içinde ne üçgeni. Bunu yapmak için basit bir algoritma var mı hesaplamak istiyor?
Böyle bir üçgen izometrik ızgara vardır:

Benim kodunda, üçgenler sütunlara göre gruplandırılmıştır.
Ben fareyi olarak, fare koordinatları içinde ne üçgeni. Bunu yapmak için basit bir algoritma var mı hesaplamak istiyor?
Ne yapmak istediğiniz ızgaraları ile çalışmak çok daha kolay olduğu için mümkün olduğunca bir ızgara dönüştürelim olduğunu.
Yapacağın ilk şey içinde ne sütunu. Sen bu yüzden basit bir tamsayı bölme yaparak daha kolay olması gerektiğini saklamak demek çalışmak olduğunu x kutu başından tarafından ofset sütun genişliği tarafından koordine. Kolay.
Bundan sonra o (besbelli) içinde ne üçgen çözmek istiyorum. Eğer kısmen ızgara dönüştürelim nasıl doğru açılı üçgenler yığını yerine izometrik üçgenler yığını olduğunu iddia olduğunu.
üçgenler y ekseni (kolonun taraf) bir uzunluğa sahiptir. ikisinde bu numarayı bölün ve kaç adım aşağı egzersiz yapın. aşağı adım sayısına dayanarak ve sütun olup olmadığını bakıyorsanız çift veya tek söyleyecektir:
+--------+
|-_ |
| -_ |
| -_ |
| -_|
+--------+
ya da ters. Bu noktada sadece o da İçinde izometrik hangi üçgen anlatır ki, öyle sağ hangi üçgen o belirlemek için üzerinde bulunuyor çizginin hangi tarafında belirlemek gerekir.
Bunun için birkaç seçenek var.
Hatta (1) hızlı arama olarak (2) oluşturmak için kullanabilirsiniz.
dikkate tek şey fare imleci bir kenarında ise böyle olur?
Bu cletus söylediklerini benzer, ama farklı bir yolu herhalde bakmak.
Ben üçgen tarafı 1'dir varsayıyorum.
Eğer aşağıdaki gibi ızgara olduğunu varsayalım:
y'
/
/__/__/__/__/__/__/
/__/__/__/__/__/__/
/__/__/__/__/__/__/____ x'
(0,0)
x ve y eksenleri, 60 derecede, olan açılı sistemde koordinat (x 'y') noktasına 'lik bir açıda olan bir koordinat sisteminde ızgara düşünürsek koordinat karşılık gelecek (x, y) (aynı kökenli eksenlerin bir genel yönü) ile ortogonal sistemi.
Sorunun, sen (x, y) verilir, biz ( 'y' x) bulmak ve sonra üçgen anlamaya ihtiyacımız var.
i, x ve y boyunca dikey j birlikte birim vektör ise, o zaman bu var
x'* i + y'( i/2 + sqrt(3) * j /2) = xi + yj.
(Temel 'açılı' y ekseni boyunca birim vektör (3) / 2 * j i / 2 + sqrt olup. X ekseni boyunca birim vektör, yani I, x-ekseni, normal olarak aynıdır).
Böylece
x' + y'/2 = x
y' * sqrt(3)/2 = y
Çözme verir:
y' = 2*y/sqrt(3)
x' = x - y/sqrt(3)
Şimdi bu x için varsayalım 've y' olumludur.
Şimdi ise C = [x '] x tamsayı kısmı'
ve r = [y '], y tam sayı kısmı'
Daha sonra (açısal) ızgara, nokta CTH sütun ve r'inci üst üste yer alır. (Hakkı Sayma ve yukarı ve 0'dan saymaya başlar).
Böylece bir paralelkenar açınızı indirgediğimizi
____
/\ * /
/___\/
(c,r)
Şimdi sırayla size x 've y' kesirli kısımlarını düşünebilirsiniz halinde olduğu üçgen öğrenmek için.
{x} = x' - [x'] = x' - c.
{y} = y' - [y'] = y' - r.
Şimdi,
eğer {x} + {y} > 1, o zaman nokta * ile işaretlenmiş üçgeninde yatıyor. eğer {x} + {y} < 1, o zaman nokta diğer üçgen yatıyor. eğer {x} + {y} = 1, o zaman nokta iki üçgen ortak hattı üzerindedir.
bu da yardımcı olur.