Блог пользователя CrazzyBeer

Автор CrazzyBeer, история, 9 лет назад, перевод, По-русски

Даны два треугольника (координаты трех точек) . Координаты не идут в какой-то особой последовательности.

Вопрос Можно ли нарисовать второй треугольник, используя как шаблон первый? При это треугольник не разрешается отрывать от доски, но можно крутить и перемещать.

EX: Вот пример, в котором ответ будет "НЕТ", ибо треугольник нужно сначала оторвать от доски, перевернуть, а потом вернуть на доску.

Сравнивать площадь и углы мало (пример выше тому доказательство), может нужно как-то по-особенному использовать ориентированную площадь?

UPD!!! Решение такое.

  1. Читаем координаты первого треугольника

  2. Вычисляем d1 (расстояние между 1 точкой и 2), d2 ( 2-3 ), d3 (1-3).

  3. Вставляем в вектор эти расстояния (предполагаем, что порядок точек по часовой стрелке)

  4. Вычисляем ориентированную площадь, если она меньше нуля, мы ошиблись, порядок против часовой, так что меняем местами vector[0] и vector[2].

  5. Делаем тоже самое для второго треугольника.

  6. Перебираем все сдвиги первого вектора на равенство со вторым (если находим равенство — ответ "ДА"), если равенство не нашли — "НЕТ".

  • Проголосовать: нравится
  • +3
  • Проголосовать: не нравится

»
9 лет назад, # |
Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится

Порядок длин сторон по часовой или против должен быть одинаковый. Если хочется, то можно воспользоваться ориентированной площадью :)

»
9 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Давыше предложили гораздо более простое решение...

»
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Can you provide the link to the problem, one possible solution is to compare length of sides of triangles and area of triangles.

  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    On the image above you can see that the lengths and areas are equal, but the answer is still "NO". I could, but this is a russian OJ and it requires registration, sorry. Here

»
9 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

I think you can indeed compare the sides, but make sure you use the same ordering (clockwise vs. counter clockwise) for both triangles. For example, given your picture, and supposing the length of the side is the number of lines you drew on it, the possible clockwise orderings for the first triangle are: (1, 2, 3), (2, 3, 1), (3, 1, 2). The clockwise orderings for the other triangle are: (1, 3, 2), (3, 2, 1), (2, 1, 3), so there are no matches between the first triangle's orderings and the second triangle's orderings, thus the answer is "NO".

  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится

    Thanks, that clears things a bit. By the way, in geometry class we used to mark equal sides this way ( the same number of lines means equallity between the segments ).