Questo è simile a ciò che diceva il cleto, ma suppongo che sia un modo diverso di guardarlo.
sto assumendo il lato del triangolo è 1.
Supponiamo di avere la griglia come di seguito:
y'
/
/__/__/__/__/__/__/
/__/__/__/__/__/__/
/__/__/__/__/__/__/____ x'
(0,0)
Se si considera la griglia in un sistema di coordinate in cui gli assi x & y sono ad un angolo di 60 gradi, un punto la cui coordinata nel sistema angolato (x ', y') corrisponderà alla coordinata nel sistema ortogonale (con la stessa origine una direzione generale degli assi) a (x, y) .
Nel tuo problema, ti viene dato (x, y), dobbiamo trovare (x ', y') e quindi calcolare il triangolo.
Se i è il vettore unitario lungo x e j ortogonale lungo y, allora abbiamo che
x'* i + y'(i/2 + sqrt(3) * j /2) = xi + yj.
(Fondamentalmente il versore lungo l'asse y 'angled' è i/2 + sqrt (3)/2 * j. Il vettore unitario lungo l'asse x è uguale all'asse x normale, cioè i).
Così
x' + y'/2 = x
y' * sqrt(3)/2 = y
Solving dà:
y' = 2*y/sqrt(3)
x' = x - y/sqrt(3)
Supponiamo per ora che x 'e y' sono positivi.
Ora se c = [x '], la parte intera di x'
er = [y '], la parte intera di y'
poi nella griglia (angolare), il il punto si trova nella colonna cth e nella riga rth. (Conteggio a destra e in alto e inizia il conteggio a 0).
Così abbiamo ridotto l'punto a un parallelogramma
____
/\ */
/___\/
(c,r)
Ora, al fine di scoprire quale triangolo è in voi può prendere in considerazione le parti frazionarie di x 'e y'.
{x} = x' - [x'] = x' - c.
{y} = y' - [y'] = y' - r.
Ora,
se {x} + {y} > 1
, allora il punto risiede nel triangolo con *. se {x} + {y} < 1
, il punto si trova nell'altro triangolo. se {x} + {y} = 1
, il punto si trova sulla linea comune ai due triangoli.
Spero che sia di aiuto.
dipende, ci deve essere una frazione di un triangolo in alto, poiché non si allinea con la parte superiore dello schermo. Come lo gestisci? –