Это похоже на то, что сказал cletus, но по-другому взглянуть на него, я полагаю.
Я предполагаю, что стороны треугольника равен 1.
Предположим, у вас есть сетки, как показано ниже:
y'
/
/__/__/__/__/__/__/
/__/__/__/__/__/__/
/__/__/__/__/__/__/____ x'
(0,0)
Если рассматривать сетки в системе координат, в которой оси у х & находятся под углом 60 градусов, точка, координата которой в угловой системе (x ', y') будет соответствовать координате в ортогональной системе (с тем же началом и общим направлением осей) до (x, y) ,
В вашей задаче вам заданы (x, y), нам нужно найти (x ', y'), а затем вычислить треугольник.
Если я единичный вектор вдоль х и у ортогональной вдоль у, то мы имеем, что
x'* i + y'(i/2 + sqrt(3) * j /2) = xi + yj.
(В основном единичный вектор вдоль «под углом» у оси я/2 + SQRT (3)/2 * j. Единичный вектор вдоль оси x совпадает с нормальной осью х, т. Е. I).
Таким образом
x' + y'/2 = x
y' * sqrt(3)/2 = y
Решение дает:
y' = 2*y/sqrt(3)
x' = x - y/sqrt(3)
Предположим теперь, что х 'и у' положительны.
Теперь, если с = [х «], целая часть х»
и г = [у «], целая часть у»
затем в (угловой) сетке, тем точка лежит в c-й колонке и r-й строке. (Подсчитывание вправо и вверх и начало отсчета на 0).
Таким образом, мы сузили точку параллелограмма
____
/\ */
/___\/
(c,r)
Теперь для того, чтобы выяснить, какой треугольник это в вы можете рассмотреть дробные части х «и у».
{x} = x' - [x'] = x' - c.
{y} = y' - [y'] = y' - r.
Теперь
если {x} + {y} > 1
, то точка лежит в треугольнике, отмеченные *. , если {x} + {y} < 1
, то точка лежит в другом треугольнике. , если {x} + {y} = 1
, то точка лежит на линии, общей для двух треугольников.
Надеюсь, что это поможет.
зависит, в верхней части должна быть часть треугольника, так как она не совпадает с верхней частью экрана. Как вы справляетесь с этим? –