Данный раздел содержит калькуляторы, позволяющие выполнять все основные действия над векторами. В частности, с помощью данных калькуляторов можно вычислять скалярное, векторное и смешанное произведения векторов, раскладывать вектора по базису, проверять их ортогональность, компланарность и др. Всего представлено 19 калькуляторов и для каждого предусмотрено подробное решение соответствующей задачи.
- Операции над векторами 19
- Создание сеток шестиугольников
- Геометрия
- Размер и расположение
- Системы координат
- Координаты смещений
- Кубические координаты
- Осевые координаты
- Преобразование координат
- Соседние шестиугольники
- Кубические координаты
- Осевые координаты
- Координаты смещения
- Диагонали
- Расстояния
- Кубические координаты
- Осевые координаты
- Координаты смещения
- Отрисовка линий
- Диапазон перемещения
- Диапазон координат
- Пересекающиеся диапазоны
- Препятствия
- Повороты
- Кольца
- Простое кольцо
- Спиральные кольца
- Область видимости
- Шестиугольники в пиксели
- Из пикселей в шестиугольники
- Округление до ближайшего шестиугольника
- Хранение карт в осевых координатах
- Зацикленные карты
- Поиск пути
- Дополнительное чтение
- Задачник «Векторный метод решения задач»
- «Снятие эмоционального напряжения у детей и подростков с помощью арт-практик и психологических упражнений»
Видео:8 класс, 43 урок, Сумма двух векторовСкачать
Операции над векторами 19
Сложение векторов Калькулятор позволяет складывать вектора, заданные в координатной форме.
Разность векторов Калькулятор позволяет вычитать вектора, заданные в координатной форме.
Умножение вектора на скаляр Калькулятор находит произведение вектора на скаляр.
Скалярное произведение векторов Калькулятор позволяет найти скалярное произведение двух векторов.
Векторное произведение векторов Калькулятор позволяет найти векторное произведение двух векторов.
Смешанное произведение векторов Калькулятор находит смешанное произведение трех векторов.
Модуль (длина) вектора Калькулятор находит модуль (длину) вектора с описанием подробного решения на русском языке.
Угол между векторами Калькулятор позволяет найти угол между векторами. Подробное решение также имеется.
Направляющие косинусы вектора Калькулятор позволяет найти направляющие косинусы вектора с подробным решением на русском языке.
Проекция вектора Калькулятор вычисляет проекцию вектора на ось или на другой вектор.
Площадь треугольника, построенного на векторах Калькулятор вычисляет площадь треугольника, построенного на векторах с описанием подробного решения на русском языке.
Площадь параллелограмма, построенного на векторах Калькулятор позволяет вычислить площадь параллелограмма, построенного на векторах с описанием подробного решения на русском языке.
Объём параллелепипеда, построенного на векторах Калькулятор позволяет найти объём параллелепипеда, который построен на трёх векторах.
Проверить ортогональность векторов Калькулятор позволяет проверить ортогональность векторов с описанием подробного решения на русском языке.
Проверить коллинеарность векторов Калькулятор позволяет проверить коллинеарность двух векторов.
Проверить компланарность векторов Калькулятор предназначен для проверки компланарности трёх векторов.
Проверить образует ли система векторов базис Калькулятор позволяет проверить образует ли система векторов базис.
Разложить вектор по базису Калькулятор позволяет разложить вектор по базису с описанием подробного решения на русском языке.
Мы в социальных сетях:
Группа ВКонтакте | Бот в Телеграмме
Видео:Вектор. Сложение и вычитание. 9 класс | МатематикаСкачать
Создание сеток шестиугольников
Сетки из шестиугольников (гексагональные сетки) используются в некоторых играх, но они не так просты и распространены, как сетки прямоугольников. Я коллекционирую ресурсы о сетках шестиугольников уже почти 20 лет, и написал это руководство по самым элегантным подходам, реализуемым в простейшем коде. В статье часто используются руководства Чарльза Фу (Charles Fu) и Кларка Вербрюгге (Clark Verbrugge). Я опишу различные способы создания сеток шестиугольников, их взаимосвязь, а также самые общие алгоритмы. Многие части этой статьи интерактивны: выбор типа сетки изменяет соответствующие схемы, код и тексты. (Прим. пер.: это относится только к оригиналу, советую его изучить. В переводе вся информация оригинала сохранена, но без интерактивности.).
Примеры кода в статье написаны псевдокодом, так их легче читать и понимать, чтобы написать свою реализацию.
Видео:Сложение векторов. 9 класс.Скачать
Геометрия
Шестиугольники — это шестигранные многоугольники. У правильных шестиугольников все стороны (грани) имеют одинаковую длину. Мы будем работать только с правильными шестиугольниками. Обычно в сетках шестиугольников используются горизонтальная (с острым верхом) и вертикальная (с плоским верхом) ориентации.
Шестиугольники с плоским (слева) и острым (справа) верхом
У шестиугольников по 6 граней. Каждая грань общая для двух шестиугольников. У шестиугольников по 6 угловых точек. Каждая угловая точка общая для трёх шестиугольников. Подробнее о центрах, гранях и угловых точках можно прочитать в моей статье о частях сеток (квадратах, шестиугольниках и треугольниках).
В правильном шестиугольнике внутренние углы равны 120°. Есть шесть «клиньев», каждый из которых является равносторонним треугольником с внутренними углами 60°. Угловая точка i находится на расстоянии (60° * i) + 30° , на size единиц от центра center . В коде:
Для заполнения шестиугольника нужно получить вершины многоугольника с hex_corner(…, 0) по hex_corner(…, 5) . Для отрисовки контура шестиугольника нужно использовать эти вершины, а затем нарисовать линию снова в hex_corner(…, 0) .
Разница между двумя ориентациями в том, что x и y меняются местами, что приводит к изменению углов: углы шестиугольников с плоским верхом равны 0°, 60°, 120°, 180°, 240°, 300°, а с острым верхом — 30°, 90°, 150°, 210°, 270°, 330°.
Углы шестиугольников с плоским и острым верхом
Размер и расположение
Теперь мы хотим расположить несколько шестиугольников вместе. В горизонтальной ориентации высота шестиугольника height = size * 2 . Вертикальное расстояние между соседними шестиугольниками vert = height * 3/4 .
Ширина шестиугольника width = sqrt(3)/2 * height . Горизонтальное расстояние между соседними шестиугольниками horiz = width .
В некоторых играх для шестиугольников используется пиксель-арт, который не точно соответствует правильным шестиугольникам. Формулы углов и расположений, описанные в этом разделе, не будут совпадать с размерами таких шестиугольников. Остальная часть статьи, описывающая алгоритмы сеток шестиугольников, применима даже если шестиугольники немного растянуты или сжаты.
Видео:КВАДРАТ ДЛИНЫ ВЕКТОРА ?/ Новое задание из ЕГЭ разбор #профиль #егэ #27731Скачать
Системы координат
Давайте приступим к сборке шестиугольников в сетку. В случае сеток квадратов существует только один очевидный способ сборки. Для шестиугольников же есть множество подходов. Я рекомендую использовать в качестве первичного представления кубические координаты. Осевые координаты или координаты смещений следует использовать для хранения карт и отображения координат для пользователя.
Координаты смещений
Наиболее частый подход — смещение каждого последующего столбца или строки. Столбцы обозначаются col или q . Строки обозначаются row или r . Можно смещать нечётные или чётные столбцы/строки, поэтому у горизонтальных и вертикальных шестиугольников есть по два варианта.
Горизонтальное расположение «нечет-r»
Горизонтальное расположение «чёт-r»
Вертикальное расположение «нечет-q»
Вертикальное расположение «чёт-q»
Кубические координаты
Ещё один способ рассмотрения сеток шестиугольников — видеть в них три основные оси, а не две, как в сетках квадратов. В них проявляется элегантная симметрия.
Возьмём сетку кубов и вырежем диагональную плоскость в x + y + z = 0 . Это странная мысль, но она поможет нам упростить алгоритмы сеток шестиугольников. В частности, мы сможем воспользоваться стандартными операциями из декартовых координат: суммированием и вычитанием координат, умножением и делением на скалярную величину, а также расстояниями.
Заметьте три основные оси на сетке кубов и их соотношение с шестью диагональными направлениями сетки шестиугольников. Диагональные оси сетки соответствуют основному направлению сетки шестиугольников.
Поскольку у нас уже есть алгоритмы для сеток квадратов и кубов, использование кубических координат позволяет нам адаптировать эти алгоритмы под сетки шестиугольников. я буду использовать эту систему для большинства алгоритмов статьи. Для использования алгоритмов с другой системой координат я преобразую кубические координаты, выполню алгоритм, а затем преобразую их обратно.
Изучите, как кубические координаты работают для сетки шестиугольников. При выборе шестиугольников выделяются кубические координаты, соответствующие трём осям.
- Каждое направление сетки кубов соответствует линии на сетке шестиугольников. Попробуйте выделить шестиугольник с z , равным 0, 1, 2, 3, чтобы увидеть связь. Строка отмечена синим. Попробуйте то же самое для x (зелёный) и y (сиреневый).
Кубические координаты — разумный выбор для системы координат сетки шестиугольников. Условием является x + y + z = 0 , поэтому в алгоритмах оно должно сохраняться. Условие также гарантирует, что для каждого шестиугольника всегда будет каноническая координата.
Существует множество различных систем координат для кубов и шестиугольников. В некоторых из них условие отличается от x + y + z = 0 . Я показал только одну из множества систем. Можно также создать кубические координаты с x-y , y-z , z-x , у которых будет свой набор интересных свойств, но я не буду их здесь рассматривать.
Но вы можете возразить, что не хотите хранить 3 числа для координат, потому что не знаете, как хранить карту в таком виде.
Осевые координаты
Осевая система координат, иногда называемая «трапецеидальной», строится на основе двух или трёх координат из кубической системы координат. Поскольку у нас есть условие x + y + z = 0 , третья координата не нужна. Осевые координаты полезны для хранения карт и отображения координат пользователю. Как и в случае с кубическими координатами, с ними можно использовать стандартные операции суммирования, вычитания, умножения и деления декартовых координат.
Существует множество кубических систем координат и множество осевых. В этом руководстве я не буду рассматривать все сочетания. Я выберу две переменные, q (столбец) и r (строка). В схемах этой статьи q соответствует x , а r соответствует z , но такое соответствие произвольно, потому что можно вращать и поворачивать схемы, получая различные соответствия.
Преимущество этой системы перед сетками смещений в большей понятности алгоритмов. Недостатком системы является то, что хранение прямоугольной карты выполняется немного странно; см. раздел о сохранении карт. Некоторые алгоритмы ещё понятнее в кубических координатах, но поскольку у нас есть условие x + y + z = 0 , мы можем вычислить третью подразумеваемую координату и использовать её в этих алгоритмах. В своих проектах я называю оси q , r , s , поэтому условие выглядит как q + r + s = 0 , и я, когда нужно, могу вычислить s = -q — r .
Координаты смещения — это первое, о чём думает большинство людей, потому что они совпадают со стандартными декартовыми координатами, используемыми для сеток квадратов. К сожалению, одна из двух осей должна проходить «против шерсти», и это в результате всё усложняет. Кубическая и осевая система идут «по шерсти» и у них более простые алгоритмы, но хранение карт немного более сложное. Существует ещё одна система, называемая «чередуемой» или «двойной», но здесь мы не будем её рассматривать; некоторые считают, что с ней проще работать, чем с кубической или осевой.
Координаты смещения, кубические и осевые
Ось — это направление, в котором соответствующая координата увеличивается. Перпендикуляр к оси — это линия, на которой координата остаётся постоянной. На схемах сеток выше показаны линии перпендикуляров.
Видео:10 класс, 41 урок, Сумма нескольких векторовСкачать
Преобразование координат
Вероятно, что вы будете использовать в своём проекте осевые координаты или координаты смещения, но многие алгоритмы проще выражаются в кубических координатах. Поэтому нам нужно уметь преобразовывать координаты между системами.
Осевые координаты близко связаны с кубическими, поэтому преобразование делается просто:
В коде эти две функции могут быть записаны следующим образом:
Координаты смещения совсем немного сложнее:
Примечание о реализации: я использую a&1 (побитовое «И») вместо a%2 (деления с остатком) для определения, является ли число чётным (0) или нечётным (1). Подробное описание см. на странице примечаний к моей реализации.
Видео:8 класс, 45 урок, Сумма нескольких векторовСкачать
Соседние шестиугольники
Дан один шестиугольник, с какими шестью шестиугольниками он находится рядом? Как и можно ожидать, легче всего дать ответ в кубических координатах, довольно просто в осевых координатах, и немного сложнее в координатах смещения. Также может потребоваться рассчитать шесть «диагональных» шестиугольников.
Кубические координаты
Перемещение на одно пространство в координатах шестиугольников приводит к изменению одной из трёх кубических координат на +1 и другой на -1 (сумма должна оставаться равной 0). На +1 могут изменяться три возможных координаты, а на -1 — оставшиеся две. Это даёт нам шесть возможных изменений. Каждое соответствует одному из направлений шестиугольника. Простейший и быстрейший способ — предварительно вычислить изменения и поместить их в таблицу кубических координат Cube(dx, dy, dz) во время компиляции:
Осевые координаты
Как и раньше, мы используем для начала кубическую систему. Возьмём таблицу Cube(dx, dy, dz) и преобразуем в таблицу Hex(dq, dr) :
Координаты смещения
В осевых координатах мы вносим изменения в зависимости от того, в каком месте сетки находимся. Если мы в столбце/строке смещения, то правило отличается от случая столбца/строки без смещения.
Как и раньше, мы создаём таблицу чисел, которые нужно прибавить к col and row . Однако на этот раз у нас будет два массива, один для нечётных столбцов/строк, а другой — для чётных. Посмотрите на (1,1) на рисунке карты сетки выше и заметьте, как меняются col и row меняются при перемещении в каждом из шести направлений. Теперь повторим процесс для (2,2) . Таблицы и код будут разными для каждого из четырёх типов сеток смещений, приводим соответствующий код для каждого типа сетки.
Сетка для чётной (EVEN) и нечётной (ODD) строк
Сетка для чётной (EVEN) и нечётной (ODD) строк
Сетка для чётного (EVEN) и нечётного (ODD) столбцов
Сетка для чётного (EVEN) и нечётного (ODD) столбцов
Использование вышеуказанных таблиц подстановки — это простейший способ вычисления соседей. Если вам интересно, можно также почитать об извлечении этих чисел.
Диагонали
Перемещение в «диагональном» пространстве в координатах шестиугольников изменяет одну из трёх кубических координат на ±2 и две другие на ∓1 (сумма должна оставаться равной 0).
Как и раньше, мы можем преобразовать эти координаты в осевые, откинув одну из трёх координат, или преобразовать в координаты смещения, предварительно вычислив результаты.
Видео:Вычитание векторов. 9 класс.Скачать
Расстояния
Кубические координаты
В кубической системе координат каждый шестиугольник является кубом в трёхмерном пространстве. Соседние шестиугольники находятся в сетке шестиугольников на расстоянии 1 друг от друга, но на расстоянии 2 в сетке кубов. Это делает расчёт расстояний простым. В сетке квадратов манхэттенские расстояния равны abs(dx) + abs(dy) . В сетке кубов манхэттенские расстояния равны abs(dx) + abs(dy) + abs(dz) . Расстояние в сетке шестиугольников равно их половине:
Эквивалентом этой записи будет выражение того, что одна из трёх координат должна быть суммой двух других, а затем получение её в качестве расстояния. Можно выбрать форму деления пополам или форму максимального значения, приведённую ниже, но они дают одинаковый результат:
На рисунке максимальные значения выделены цветом. Заметьте также, что каждый цвет обозначает одно из шести «диагональных» направлений.
Осевые координаты
В осевой системе третья координата выражена неявно. Давайте преобразуем из осевой в кубическую систему для расчёта расстояния:
Если компилятор в вашем случае встраивает (inline) hex_to_cube и cube_distance , то он сгенерирует такой код:
Существует множество различных способов записи расстояний между шестиугольниками в осевых координатах, но вне зависимости от способа записи расстояние между шестиугольниками в осевой системе извлекается из манхэттенского расстояния в кубической системе. Например, описанная здесь «разность разностей» получается из записи a.q + a.r — b.q — b.r как a.q — b.q + a.r — b.r и с использованием формы максимального значения вместо формы деления пополам cube_distance . Все они аналогичны, если увидеть связь с кубическими координатами.
Координаты смещения
Как и в случае с осевыми координатами, мы преобразуем координаты смещения в кубические координаты, а затем используем расстояние кубической системы.
Мы будем использовать тот же шаблон для многих алгоритмов: преобразуем из шестиугольников в кубы, выполняем кубическую версию алгоритма и преобразуем кубические результаты в координаты шестиугольников (осевые или координаты смещения).
Видео:СУММА ВЕКТОРОВ правило треугольникаСкачать
Отрисовка линий
Как нарисовать линию от одного шестиугольника до другого? Я использую линейную интерполяцию для рисования линий. Линия равномерно сэмплируется в N+1 точках и вычисляется, в каких шестиугольниках находятся эти сэмплы.
- Сначала мы вычисляем N , которое будет расстоянием в шестиугольниках между конечными точками.
- Затем равномерно сэмплируем N+1 точек между точками A и B. С помощью линейной интерполяции определяем, что для значений i от 0 до N , включая их, каждая точка будет A + (B — A) * 1.0/N * i . На рисунке эти контрольные точки показаны синим. В результате получаются координаты с плавающей запятой.
- Преобразуем каждую контрольную точку (float) обратно в шестиугольники (int). Алгоритм называется cube_round (см. ниже).
Соединяем всё вместе для отрисовки линии от A до B:
- Бывают случаи, когда cube_lerp возвращает точку, находящуюся точно на грани между двумя шестиугольниками. Затем cube_round сдвигает её в ту или иную сторону. Линии выглядят лучше, если их сдвигают в одном направлении. Это можно сделать, добавив «эпсилон»-шестиугольный Cube(1e-6, 1e-6, -2e-6) к одной или обеим конечным точкам перед началом цикла. Это «подтолкнёт» линию в одном направлении, чтобы она не попадала на границы граней.
- Алгоритм DDA-линии в сетках квадратов приравнивает N к максимуму расстояния по каждой из осей. Мы делаем то же самое в кубическом пространстве, что аналогично расстоянию в сетке шестиугольников.
- Функция cube_lerp должна возвращать куб с координатами в float. Если вы программируете на языке со статической типизацией, то не сможете использовать тип Cube . Вместо него можно определить тип FloatCube или встроить (inline) функцию в код отрисовки линий, если вы не хотите определять ещё один тип.
- Можно оптимизировать код, встроив (inline) cube_lerp , а затем рассчитав B.x-A.x , B.x-A.y и 1.0/N за пределами цикла. Умножение можно преобразовать в повторяющееся суммирование. В результате получится что-то вроде алгоритма DDA-линии.
- Для отрисовки линий я использую осевые или кубические координаты, но если вы хотите работать с координатами смещения, то изучите эту статью.
- Существует много вариантов отрисовки линий. Иногда требуется «сверхпокрытие». Мне прислали код отрисовки линий с сверхпокрытием в шестиугольниках, но я пока не изучал его.
Видео:Сложение векторов. Правило параллелограмма. 9 класс.Скачать
Диапазон перемещения
Диапазон координат
Для заданного центра шестиугольника и диапазона N какие шестиугольники находятся в пределах N шагов от него?
Мы можем произвести обратную работу из формулы расстояния между шестиугольниками distance = max(abs(dx), abs(dy), abs(dz)) . Чтобы найти все шестиугольники в пределах N , нам нужны max(abs(dx), abs(dy), abs(dz)) ≤ N . Это значит, что нужны все три значения: abs(dx) ≤ N и abs(dy) ≤ N и abs(dz) ≤ N . Убрав абсолютное значение, мы получим -N ≤ dx ≤ N и -N ≤ dy ≤ N и -N ≤ dz ≤ N . В коде это будет вложенный цикл:
Этот цикл сработает, но будет довольно неэффективным. Из всех значений dz , которые мы перебираем в цикле, только одно действительно удовлетворяет условию кубов dx + dy + dz = 0 . Вместо этого мы напрямую вычислим значение dz , удовлетворяющее условию:
Этот цикл проходит только по нужным координатам. На рисунке каждый диапазон является парой линий. Каждая линия — это неравенство. Мы берём все шестиугольники, удовлетворяющие шести неравенствам.
Пересекающиеся диапазоны
Если нужно найти шестиугольники, находящиеся в нескольких диапазонах, то перед генерированием списка шестиугольников можно пересечь диапазоны.
Можно подойти к этой проблеме с точки зрения алгебры или геометрии. Алгебраически каждая область выражается как условия неравенств в форме -N ≤ dx ≤ N , и нам нужно найти пересечение этих условий. Геометрически каждая область является кубом в трёхмерном пространстве, и мы пересечём два куба в трёхмерном пространстве для получения прямоугольного параллелепипеда в трёхмерном пространстве. Затем мы проецируем его обратно на плоскость x + y + z = 0 , чтобы получить шестиугольники. Я буду решать эту задачу алгебраически.
Во-первых, мы перепишем условие -N ≤ dx ≤ N в более общей форме xmin ≤ x ≤ xmax , и примем xmin = center.x — N и xmax = center.x + N . Сделаем то же самое для y и z , в результате получив общий вид кода из предыдущего раздела:
Пересечением двух диапазонов a ≤ x ≤ b и c ≤ x ≤ d является max(a, c) ≤ x ≤ min(b, d) . Поскольку область шестиугольников выражена как диапазоны над x , y , z , мы можем отдельно пересечь каждый из диапазонов x , y , z , а затем использовать вложенный цикл для генерирования списка шестиугольников в пересечении. Для одной области шестиугольников мы принимаем xmin = H.x — N and xmax = H.x + N , аналогично для y и z . Для пересечения двух областей шестиугольников мы принимаем xmin = max(H1.x — N, H2.x — N) и x max = min(H1.x + N, H2.x + N), аналогично для y и z . Тот же шаблон работает для пересечения трёх или более областей.
Препятствия
При наличии препятствий проще всего выполнить заливку с ограничением по расстоянию (поиск в ширину). На рисунке ниже мы ограничиваемся четырьмя ходами. В коде fringes[k] — это массив всех шестиугольников, которых можно достичь за k шагов. При каждом проходе по основному циклу мы расширяем уровень k-1 на уровень k .
Видео:Правило параллелепипеда для векторовСкачать
Повороты
Для заданного вектора шестиугольника (разницу между двумя шестиугольниками) нам может понадобиться повернуть его, чтобы он указывал на другой шестиугольник. Это просто сделать, имея кубические координаты, если придерживаться поворота на 1/6 окружности.
Поворот на 60° вправо сдвигает каждую координату на одну позицию вправо:
Поворот на 60° влево сдвигает каждую координату на одну позицию влево:
«Поиграв» [в оригинале статьи] со схемой, можно заметить, что каждый поворот на 60° меняет знаки и физически «поворачивает» координаты. После поворота на 120° знаки снова становятся теми же. Поворот на 180° меняет знаки, но координаты поворачиваются в своё изначальное положение.
Вот полная последовательность поворота положения P вокруг центрального положения C, приводящего к новому положению R:
- Преобразование положений P и C в кубические координаты.
- Вычисление вектора вычитанием центра: P_from_C = P — C = Cube(P.x — C.x, P.y — C.y, P.z — C.z) .
- Поворот вектора P_from_C как описано выше и присваивание итоговому вектору обозначения R_from_C .
- Преобразование вектора обратно в положение прибавлением центра: R = R_from_C + C = Cube(R_from_C.x + C.x, R_from_C.y + C.y, R_from_C.z + C.z) .
- Преобразование кубического положения R обратно в нужную систему координат.
Здесь несколько этапов преобразований, но каждый из них довольно прост. Можно сократить некоторые из этих этапов, определив поворот непосредственно в осевых координатах, но векторы шестиугольников не работают с координатами смещения, и я не знаю, как сократить этапы для координат смещения. См. также обсуждение других способов вычисления поворота на stackexchange.
Видео:Сложение и вычитание векторов. Практическая часть. 11 класс.Скачать
Кольца
Простое кольцо
Чтобы выяснить, принадлежит ли заданный шестиугольник к кольцу заданного радиуса radius , нужно вычислить расстояние от этого шестиугольника до центра, и узнать, равно ли оно radius . Для получения списка всех таких шестиугольников нужно сделать radius шагов от центра, а затем следовать за поворачиваемыми векторами по пути вдоль кольца.
В этом коде cube начинается на кольце, показанном большой стрелкой от центра к углу схемы. Я выбрал для начала угол 4, потому что он соответствует пути, в котором двигаются мои числа направлений. Вам может понадобиться другой начальный угол. На каждом этапе внутреннего цикла cube двигается на один шестиугольник по кольцу. Через 6 * radius шагов он завершает там, где начал.
Спиральные кольца
Проходя по кольцам по спиральному паттерну, мы можем заполнить внутренние части колец:
Площадь большого шестиугольника равна сумме всех окружностей плюс 1 для центра. Для вычисления площади используйте эту формулу.
Обход шестиугольников таким способом можно также использовать для вычисления диапазона перемещения (см. выше).
Видео:ВЫЧИТАНИЕ ВЕКТОРОВ ЧАСТЬ I #егэ #огэ #математика #геометрия #профильныйегэСкачать
Область видимости
Что видимо из заданного положения с заданным расстоянием, и не перекрывается препятствиями? Простейший способ определить это — нарисовать линию к каждому шестиугольнику в заданном диапазоне. Если линия не встречается со стенами, то вы видите шестиугольник. Перемещайте мышь по шестиугольникам [на схеме в оригинале статьи], чтобы увидеть отрисовку линий к этим шестиугольникам и стены, с которыми линии встречаются.
Этот алгоритм может быть медленным на больших площадях, но его легко реализовать, поэтому рекомендую начать с него.
Существует много разных определений видимости. Хотите ли вы видеть центр другого шестиугольника из центра начального? Хотите ли вы видеть любую часть другого шестиугольника из центра начального? Может быть, любую часть другого шестиугольника из любой точки начального? Мешающие взгляду препятствия меньше полного шестиугольника? Область видимости — это более хитрое и разнообразное понятие, чем кажется на первый взгляд. Начнём с простейшего алгоритма, но ждите, что он обязательно правильно вычислит ответ в вашем проекте. Бывают даже случаи, когда простой алгоритм даёт нелогичные результаты.
В руководстве Кларка Вербрюгге описывается алгоритм для вычисления области видимости «начинаем с центра и двигаемся наружу». См. также проект Duelo, у которого есть на Github онлайн-демо области видимости с направлениями. Также можете прочитать мою статью об расчёте 2d-видимости, в ней есть алгоритм, работающий с многоугольниками, в том числе и с шестиугольниками. У сообщества любителей roguelike есть хороший набор алгоритмов для сеток квадратов (см. здесь, здесь и здесь). Некоторые из них можно адаптировать под сетки шестиугольников.
Видео:Геометрия 9 класс (Урок№2 - Сумма двух векторов. Законы сложения векторов.)Скачать
Шестиугольники в пиксели
Для перевода из шестиугольников в пиксели полезно изучить схему размеров и расположения, представленную в разделе «Геометрия». В случае осевых координат к преобразованию из шестиугольников в пиксели надо подходить, рассматривая базисные векторы. На схеме стрелка A→Q — это базисный вектор q, а A→R — базисный вектор r. Координата пикселя равна q_basis * q + r_basis * r . Например, B в (1, 1) является суммой базисных векторов q и r.
При наличии библиотеки матриц операция является простым умножением матриц. Однако здесь я запишу код без матриц. Для осевой сетки x = q , z = r , которую я использую в этом руководстве, преобразование будет иметь следующий вид:
Для шестиугольников с плоскими верхами
Для шестиугольников с острыми верхами
Матричный подход будет удобен позже, когда нам нужно будет преобразовать координаты пикселей обратно в координаты шестиугольников. Всё, что нам понадобится — обратить матрицу. Для кубических координат можно либо использовать кубические базисные векторы (x, y, z), или сначала преобразовать их в осевые, а затем использовать осевые базисные векторы (q, r).
Для координат смещения нам нужно будет сместить номер столбца или строки (он больше не будет целым). После этого можно использовать базисные векторы q и r, связанные с осями x и y:
К сожалению, координаты смещения не имеют базисных векторов, которые можно использовать вместе с матрицей. Это одна из причин того, почему преобразования из пикселей в шестиугольники сложнее в координатах смещения.
Другой подход: преобразовывать координаты смещения в кубические/осевые координаты, затем использовать преобразование кубических/осевых координат в пиксели. Благодаря встраиванию кода преобразования при оптимизации он в результате будет таким же, как выше.
Видео:18+ Математика без Ху!ни. Скалярное произведение векторов. Угол между векторами.Скачать
Из пикселей в шестиугольники
Один из самых частых вопросов заключается в том, как взять положение пикселя (например, щелчка мыши) и преобразовать его в координату сетки шестиугольников? Я покажу, как это делается для осевых или кубических координат. Для координат смещения проще всего будет преобразовать в конце кубические координаты в координаты смещения.
- Сначала мы инвертируем преобразование из шестиугольника в пиксели. Это даст нам дробные координаты шестиугольника, показанные на рисунке маленьким синим кругом.
- Затем мы определим шестиугольник, содержащий дробную координату шестиугольника. Он показан на рисунке подсвеченным шестиугольником.
Для преобразования координат шестиугольников в координаты пикселей мы умножили q , r на базисные векторы для получения x , y . Можно считать это умножением матриц. Вот матрица для шестиугольников с острыми верхами:
Преобразование координат пикселей обратно в координаты шестиугольников достаточно прямолинейно. Мы можем обратить матрицу:
Эти вычисления дадут нам дробные осевые координаты (float) для q и r . Функция hex_round() преобразует дробные осевые координаты в целые осевые координаты шестиугольников.
Вот код для осевых шестиугольников с острыми верхами:
А вот код для осевых шестиугольников с плоскими верхами:
Эти три строчки кода преобразуют положение пикселя в осевую координату шестиугольника. Если вы используете координаты смещения, то воспользуйтесь return cube_to_hex(cube_round(Cube(q, -q-r, r))) .
Существует множество других способов преобразования пикселей в шестиугольники. На этой странице перечислены известные мне.
Видео:Задание 3 (№27717) ЕГЭ по математике. Урок 80Скачать
Округление до ближайшего шестиугольника
Иногда у нас получается кубическая координата (x, y, z) с плавающей запятой, и нам нужно узнать, в каком шестиугольнике она должна находиться. Это выясняется отрисовкой линии и преобразованием из пикселей в шестиугольники. Преобразование значения с плавающей запятой в целое значение называется округлением (rounding), поэтому я назвал этот алгоритм cube_round .
В кубических координатах x + y + z = 0 даже при кубических координатах с плавающей точкой. Поэтому давайте округлим каждую компоненту до ближайшего целого (rx, ry, rz) . Однако, хотя x + y + z = 0 , после округления у нас нет гарантий того, что rx + ry + rz = 0 . Поэтому мы изменяем компоненту с самым большим изменением так, чтобы условие rx + ry + rz = 0 было верным. Например, если изменение y abs(ry-y) больше abs(rx-x) и abs(rz-z) , то мы изменяем его на ry = -rx-rz . Это гарантирует нам, что rx + ry + rz = 0 . Вот алгоритм:
Для некубических координат проще всего будет преобразовать их в кубические координаты, воспользоваться алгоритмом округления, а затем преобразовать обратно:
Примечание о реализации: cube_round и hex_round получают координаты в float, а не в int. Если вы написали классы Cube и Hex , они будут отлично работать в языках с динамической типизацией, в которых можно передавать числа с плавающей запятой вместо целых, и в языках со статической типизацией с унифицированным типом чисел. Однако в большинстве языков со статической типизацией нужен будет отдельный тип class/struct для координат float и cube_round будет иметь тип FloatCube → Cube . Если вам также нужна hex_round , она будет FloatHex → Hex , использующей вспомогательную функцию floatcube_to_floathex вместо cube_to_hex . В языках с параметризированными типами (C++, Haskell и т.д.) можно определить Cube, где T является int или float. Или же можно написать cube_round для получения трёх чисел с плавающей точкой в качестве входных данных вместо определения нового типа только для этой функции.
Видео:Нахождение длины вектора через координаты. Практическая часть. 9 класс.Скачать
Хранение карт в осевых координатах
Чаще всего осевая система координат вызывает жалобы потому, что приводит к ненужному расходованию пространства при использовании прямоугольных карт. Это одна из причин в пользу системы координат смещения. Однако все системы координат шестиугольников приводят к расходу пространства при использовании треугольных или шестиугольных карт. Мы можем использовать одну стратегию для хранения всех этих типов карт.
Прямоугольная карта
Треугольная карта
Шестиугольная карта
Ромбовидная карта
Заметьте на схеме, что неиспользуемое пространство находится справа и слева от каждой строки (за исключением ромбовидных карт). Это даёт нам три варианта стратегий хранения карты:
- Игнорировать проблему. Использовать сплошной массив с нулями или другими индикаторами неиспользуемого пространства. Для этих стандартных форм карт неиспользуемое пространство может занимать максимум половину массива. Возможно, использование более сложных решений нерационально.
- Использовать вместо сплошного массива хеш-таблицу. Это позволяет использовать карты произвольной формы, в том числе и с отверстиями. Когда нужно получить доступ к шестиугольнику в q,r мы вместо этого получаем доступ к hash_table(hash(q,r)) . Инкапсулируем её в геттер/сеттер в классе сетки, чтобы остальная часть игры не должна была знать о ней.
- Сместить строки влево и использовать строки с переменным размером. Во многих языках двухмерный массив является массивом массивов. Массивы необязательно должны быть одной длины. Это позволяет избавиться от неиспользуемого пространства справа. Кроме того, если начинать массивы с самого левого столбца вместо 0, то удалится неиспользуемое пространство слева.
Чтобы применить эту стратегию в произвольных выпуклых картах, необходимо хранить дополнительный массив «первых столбцов». Когда нужно получить доступ к шестиугольнику в q,r , мы вместо этого получаем доступ к array[r][q — first_column[r]] . Инкапсулируем его в геттер/сеттер в классе сетки, чтобы остальная часть игры не должна была знать о нём. На съеме first_column показан в левой части каждой строки.
Если карты имеют фиксированные формы, то «первые столбцы» можно вычислять «на лету», а не хранить их в массиве.
- Для прямоугольных карт first_column[r] == -floor(r/2) . В результате мы получаем доступ к array[r][q + r/2] , что оказывается аналогом преобразования координат в координаты смещения сетки.
- Для треугольных карт, как здесь показано, first_column[r] == 0 , поэтому мы получаем доступ к access array[r][q] — очень удобно! Для треугольных карт, ориентированных по-другому (не показаны на схеме), это будет array[r][q+r] .
- Для шестиугольных карт радиуса N , где N = max(abs(x), abs(y), abs(z) , у нас получается first_column[r] == -N — min(0, r) . Мы получаем доступ к array[r][q + N + min(0, r)] . Однако так как мы начинаем с каких-то значений r , нам также нужно сместить строку и использовать array[r + N][q + N + min(0, r)] .
- Для ромбовидных карт всё идеально совпадает, поэтому можно использовать массив array[r][q] .
Видео:Разложение вектора по базису. 9 класс.Скачать
Зацикленные карты
В некоторых играх требуется, чтобы карта «склеивалась» по краям. Квадратную карту можно обернуть только по оси x (что примерно соответствует сфере) или по обеим осям x и y (что примерно соответствует тору). Сворачивание зависит от формы карты, а не от формы её элементов. Сворачивание квадратной карты проще выполняется в координатах смещения. Я покажу, как выполняется сворачивание шестиугольной карты в кубических координатах.
Относительно центра карты существует шесть «зеркальных» центров. При выходе с карты мы вычитаем ближайший к нам зеркальный центр, пока снова не вернёмся на основную карту. На схеме [в оригинале статьи] попробуйте покинуть центральную карту, и понаблюдайте, как один из зеркальных центров входит в карту с противоположной стороны.
Простейшей реализацией будет предварительное вычисление ответов. Создаём таблицу подстановок, хранящую для каждого шестиугольника, выходящего с карты, соответствующий куб с другой стороны. Для каждого из шести зеркальных центров M и для каждого из положений на карте L храним mirror_table[cube_add(M, L)] = L . Каждый раз при вычислении шестиугольника, находящегося в таблице зеркал заменяем его неотзеркаленной версией.
На шестиугольной карте с радиусом N зеркальные центры будут Cube(2*N+1, -N, -N-1) и шестью его поворотами.
Видео:10 класс, 40 урок, Сложение и вычитание векторовСкачать
Поиск пути
При использовании поиска пути на графах, например алгоритма поиска A*, алгоритма Дейкстры или Флойда-Уоршелла поиск пути на сетках шестиугольников не отличается от поиска пути на сетках квадратов. Пояснения и код из моего руководства по поиску пути применимы и для сеток шестиугольников.
[В оригинале статьи пример интерактивен, нажатиями мыши можно добавлять и удалять стены]
- Соседи. Пример кода, представленный в руководстве по поиску пути, вызывает для получения соседних с положением элементов graph.neighbors . Используйте для этого функцию в разделе «Соседние шестиугольники». Отфильтровывайте непроходимые соседние шестиугольники.
- Heuristic. В примере кода алгоритма A* используется функция heuristic , получающая расстояние между двумя положениями. Используйте формулу расстояний, умноженную на затраты на передвижение. Например, если перемещение стоит 5 единиц на шестиугольник, то умножайте расстояние на 5.
Видео:Нахождение координат вектора. Практическая часть. 9 класс.Скачать
Дополнительное чтение
- В моём руководстве по сеткам я рассматриваю осевые системы координат и обработку граней и углов квадратов, треугольников и шестиугольников. Также я объясняю, как связаны сетки квадратов и шестиугольников.
- Лучшим ранним руководством, которое я видел, стало руководство Кларка Вербрюгге, написанное в 1996 году.
- Впервые я увидел кубическую систему координат в посте 1994 года Чарльза Фу в rec.games.programmer.
- В DevMag есть хороший визуальный обзор математики шестиугольников, включая способы представления площадей, таких как полуплоскости, треугольники и четырёхугольники. Существует версия в PDF, которая немного подробнее. Крайне рекомендуется к изучению! Библиотека GameLogic Grids реализует эти и многие другие типы сеток в Unity.
- У Джеймса Макнейла есть хорошее визуальное объяснение преобразований сеток.
- Обзор типов координат шестиугольников: ступенчатых (со смещением), чередуемых, трёхмерных (кубических) и трапецеидальных (осевых).
- Библиотека Rot.js содержит список систем координат шестиугольников: неортогональной (осевой), с нечётным сдвигом (со смещением), двойной ширины (чередуемой), кубической.
- Диапазон в кубических координатах: какие шестиугольники находятся на заданном расстоянии от заданного?
- Определение расстояний в сетках шестиугольников с помощью кубических координат и объяснение причин использования кубических координат вместо координат смещения.
- В этом руководстве объясняются основы измерения и отрисовки шестиугольников с помощью сетки смещения.
- Преобразование кубических координат шестиугольников в координаты пикселей.
- В этом посте объясняется, как генерировать кольца.
- В системе HexPart используются как шестиугольники, так и прямоугольники для упрощения работы с некоторыми алгоритмами.
- Есть ли плюсы и минусы у шестиугольников с плоским и острым верхом?
- Линия видимости в сетке шестиугольников с координатами смещения, разделение шестиугольников на треугольники. [Нерабочая ссылка]
- Hexnet объясняет, что соотношение между шестиугольниками и кубами намного глубже, чем я описал в этой статье, и обобщает связь до большего количества измерений.
- Я использовал PDF с сетками шестиугольников с этой страницы, когда работал над некоторыми алгоритмами.
- Обобщённая сбалансированная троичная система счисления для координат шестиугольников выглядит интересно; я пока не изучал её.
- Hex-Grid Utilities — это библиотека C# с открытым исходным кодом для математики сеток шестиугольников с определением соседних шестиугольников, сетками, поиском диапазонов и путей, областью видимости. Лицензия MIT.
- В обсуждениях на Reddit, Hacker News и MetaFilter есть больше комментариев и ссылок.
Код [оригинала] этой статьи написан на смеси Haxe и Javascript: Cube.hx, Hex.hx, Grid.hx, ScreenCoordinate.hx, ui.js и cubegrid.js (для анимации кубов/шестиугольников). Однако если вы хотите написать свою библиотеку сеток шестиугольников, то рекомендую вместо этого кода изучить моё руководство по реализации.
Я хочу в дальнейшем расширять это руководство. У меня есть список на Trello.
Задачник «Векторный метод решения задач»
Обращаем Ваше внимание, что в соответствии с Федеральным законом N 273-ФЗ «Об образовании в Российской Федерации» в организациях, осуществляющих образовательную деятельность, организовывается обучение и воспитание обучающихся с ОВЗ как совместно с другими обучающимися, так и в отдельных классах или группах.
«Снятие эмоционального напряжения
у детей и подростков с помощью арт-практик
и психологических упражнений»
Сертификат и скидка на обучение каждому участнику
Задачник «Векторный метод решения задач»
Составила: Казакова Ольга Сергеевна,
учитель математики МОУ «СОШ № 75» г. Саратова.
Данный задачник предназначен для изучения тем: «Векторы», «Действия с векторами», «Векторный метод решения задач». Инструктивное изложение материала, при постоянной практической пробе, даёт возможность изучить темы самостоятельно.
№ 1.Заполните таблицу. Основные понятия.
Решение и изображение
1)На плоскости отметьте точки A и B , постройте отрезок AB ;
2)На отрезке AB пусть точка A будет началом, а точка B – концом. Укажите стрелкой в конце отрезка направление из начала в конец. Вы получили отрезок, для которого указано, какая из его граничных точек считается началом, а какая – концом, то есть получили направленный отрезок или вектор .
3)Построен вектор , его можно обозначить и однострочной латинской буквой, например, , которая записывается над изображением вектора.
Сколько векторов можно провести, выбирая начало и конец среди данных на плоскости:
2)трёх точек, не лежащих на одной прямой;
3)четырёх точек, не лежащих на одной прямой?
Отметьте на плоскости любую точку и обозначьте её, например, заглавной буквой M . Вы построили нулевой вектор, его начало и конец совпадают.
Обозначение нулевого вектора: или символом .
1)Постройте отрезок AB , длина которого 4 см;
2)Постройте вектор .
Длиной или модулем ненулевого вектора называется длина отрезка AB .
Обозначение: = AB = 4.
Чему равна длина нулевого вектора?
3)Постройте вектор , длиной 7 см.
1)Постройте параллельные прямые p и m .
2)На прямой p постройте:
а)вектор , произвольной длины и направления;
б)вектор , произвольной длины и направления;
3)На прямой m постройте: вектор , произвольной длины и направления.
Ненулевые векторы называются коллинеарными , если они лежат либо на одной прямой, либо на параллельных прямых.
Нулевой вектор считается коллинеарным любому вектору.
4)Выпишите попарно коллинеарные векторы.
5)Постройте и обозначьте два произвольных вектора, которые являются не коллинеарными вектору . Будут ли они являться коллинеарными векторам , ?
Постройте два коллинеарных вектора.
Полученные векторы направлены одинаково или противоположно?
Если одинаково, то вы построили сонаправленные векторы. Обозначение:
.
Если противоположно, то вы построили противоположно направленные векторы. Обозначение: .
Начертите параллелограмм ABCD . Проведите векторы, начало и конец которых совпадают с какими-то двумя вершинами параллелограмма. Сколько существует пар векторов, которые являются:
1)коллинеарными друг другу;
Постройте векторы и , так, чтобы:
1) ;
2) .
Вы построили равные векторы.
Векторы называются равными , если они сонаправлены и их длины равны.
№ 2.Заполните таблицу. Операции над векторами.
Решение и изображение
На плоскости произвольно выберите точку A , приняв её за начало, проведите вектор , произвольной длины и направления. Таким образом, вы отложили вектор от точки A .
Можно отложить от другой точки плоскости, вектор, равный данному вектору ?
Допустим, что вектор ненулевой, а точки A и B – его начало и конец.
1)Через произвольно взятую точку M плоскости проведите прямую p , параллельную AB (если M – точка прямой AB , то в качестве прямой p возьмём саму прямую AB ).
2)На прямой p отложите два противоположно направленных вектора и , длины которых равны отрезку AB .
Среди построенных векторов выберите тот, что сонаправлен с вектором , он и будет являться искомым вектором, равным вектору . К тому же такой вектор только один, что следует из построения.
А если вектор – нулевой? Ответьте самостоятельно.
Итак, от любой точки M можно отложить вектор, равный данному вектору , и при том только один.
1)Векторы и .
2)Произвольная точка A .
3)От точки A отложите вектор , равный вектору .
4)От точки B отложите вектор , равный вектору .
5)Вектор .
Вы, таким образом, выполнили построение сложения векторов и по правилу треугольника . Вектор называется суммой векторов и .
Докажем, что если и , то .
Рассмотрим случай, когда точки A , B , , точки B , C , и точки A , C , не лежат на одной прямой (остальные случаи рассмотрите самостоятельно).
а) ;
б) ;
в)Соединим точки A и , B и , C и ;
2) – параллелограмм ;
3) – параллелограмм ;
4)Из 2) и 3) – параллелограмм;
5)Значит, . Доказано.
Вывод: при необходимости можно работать как с данными векторами, так и с равными им.
Законы сложения векторов.
Для любых векторов , и справедливы равенства:
(переместительный закон)
(сочетательный закон)
Доказательство законов проведите самостоятельно, опираясь на подсказки:
Для доказательства первого закона можете достроить треугольник до параллелограмма и работать как с самими векторами, так и с равными им.
Для доказательства второго закона достаточно несколько раз применить правило треугольника для сложения векторов, последовательно отложенных от концов предыдущих векторов.
1)Произвольная точка A ;
2)Неколлинеарные векторы и ;
3) От точки A отложите вектор , равный вектору .
4)От точки A отложите вектор , равный вектору .
5)Постройте параллелограмм ABCD ;
6) .
Вы построили сложение векторов и по правилу параллелограмма сложения неколлинеарных векторов.
Как сложить несколько векторов?
Последовательное применение правила треугольника для сложения векторов даёт возможность сложить любое количество векторов. Причём порядок сложения не важен. Сложение нескольких векторов производится следующим образом: два вектора складываются, получившаяся сумма складывается с третьим и т.д.
Выполните сложение пяти любых векторов, используя то, что несколько векторов можно расположить таким образом: первый вектор откладывается от любой точки, второй – от конца первого и т.д. Сумма всех векторов – вектор, направленный от начала первого вектора к концу последнего.
Вы выполнили построение сложения нескольких векторов, пользуясь правилом многоугольника .
Подумайте, чему будет равна сумма векторов, если начало первого вектора совпадает с концом последнего?
Разностью векторов и называется такой вектор, сумма которого с вектором равна вектору .
Вектор называется противоположным вектору , если векторы и имеют равные длины и противоположно направлены. Обозначение: . .
Докажите, что . Для этого воспользуйтесь определением разности векторов и прибавлением к обеим частям равенства вектора.
На прямой p от любой точки O отложите вектор , от конца вектора отложите вектор . Длина построенного суммарного вектора, равна или .
Произведением ненулевого вектора на число k называется такой вектор , длина которого равна , причём векторы и сонаправлены при k 0 и противоположно направлены при k .
Произведением нулевого вектора на любое число считается нулевой вектор.
Из определения следует:
1)произведение любого вектора на число нуль есть нулевой вектор;
2)для любого числа k и любого вектора векторы и коллинеарны.
Свойства умножения вектора на число.
Для любых чисел k , l и любых векторов , справедливы равенства:
(сочетательный закон)
(первый распределительный закон)
(второй распределительный закон)
На прямой p от произвольно выбранной точки O отложите: вектор , длиной 1 см; вектор , сонаправленный с вектором , длиной 2 см; вектор , противоположно направленный с вектором , длиной 3 см.
Попробуем выразить векторы и через вектор .
Во сколько раз длины этих векторов отличаются от длины вектора ?
; ;
, , т. е. векторы , и коллинеарны друг другу, значит, можно воспользоваться леммой.
Если векторы и коллинеарны и , то существует такое число k , что .
Итак, можем выразить: , .
От произвольной точки O отложите векторы и , и – произвольные данные векторы. Если и не являются сонаправленными, то лучи OA и OB образуют угол AOB , градусную меру которого обозначьте буквой α. Будем говорить, что угол между векторами и равен α. Обозначение: .
Если , то
Если , то векторы и называются перпендикулярными.
Скалярным произведением двух векторов называется произведение их длин на косинус угла между ними.
Напишите формулу скалярного произведения для случаев, когда:
;
;
.
Сделайте вывод, о том, в каком случае скалярное произведение двух векторов равно нулю.
Напишите формулу скалярного произведения для случая, когда вектор скалярно умножается на себя. В этом случае скалярное произведение называется скалярным квадратом . Обозначение: .
Итак, перечислите все операции над векторами.
№ 3.Решая задачи, заполните пустые ячейки в таблице.
k , что ,
точки M и N совпадают
точка C принадлежит прямой AB
, или
, или
точка С – середина отрезка AB
точка D разбивает отрезок AC так, что AD : DC = m : n
Заполняя таблицу, вы пользовались векторным методом решения задач.
Векторный метод – один из наиболее общих методов решения геометрических задач.
Для решения задач элементарной геометрии с помощью векторов необходимо, прежде всего, научиться «переводить» условие геометрической задачи на «векторный» язык. После такого перевода осуществляются алгебраические вычисления с векторами, а затем полученное снова «переводится» на «геометрический» язык. В этом и состоит сущность векторного метода решения геометрических задач.
Далее вам необходимо самостоятельно решать задачи. После решения каждой задачи делайте вывод о её значимости. Если результат задачи возможно использовать для решения других, то заносите его в таблицу № 3. Таким образом, вы получите набор базовых задач, на основании которых решаются более сложные.
1)Докажите, что средняя линия треугольника параллельна его третьей стороне и равна её половине.
2)Докажите, что средняя линия трапеции параллельна её основанию и её длина равна полусумме длин её оснований.
3)Если средняя линия четырёхугольника равна полусумме длин её оснований (сторон, не имеющих общей точки со средней линией), то этот четырёхугольник является трапецией или параллелограммом.
4)Около окружности описана равнобочная трапеция ABCD . Точки E и K – точки касания этой окружности с боковыми сторонами AB и CD . Докажите, что отрезок EK параллелен основаниям трапеции.
5)Докажите, что биссектриса угла треугольника делит его сторону на отрезки, пропорциональные прилежащим сторонам. Выразите биссектрису через угол треугольника, который она делит пополам, и через стороны этого угла.
6)Если точки M и N делят отрезки AB и CD соответственно в равных отношениях так, что AM : MB = CN : ND = m : n , то выполняется равенство: .
7)В треугольнике ABC через M обозначена точка пересечения медиан. Докажите, что .
8)Пусть M – точка пересечения медиан треугольника ABC , O – произвольная точка. Докажите, что .
9)Пусть H – точка пересечения высот треугольника ABC , O – центр описанной окружности. Докажите, что .
10)Докажите, что три точки A , B , C ( A ≠ B ) лежат на одной прямой тогда и только тогда, когда имеет место равенство, , в котором α+β=1, где O – некоторая точка.
11)Докажите, что центр описанной окружности
12)Докажите, что если точки пересечения диагоналей четырёхугольника и середины двух его противоположных сторон лежат на одной прямой, то этот четырёхугольник – трапеция или параллелограмм.
13)Докажите, что медианы треугольника пересекаются в одной точке и делятся ею в отношении 2:1, считая от вершины.
14)Докажите, что биссектрисы треугольника пересекаются в одной точке.
15)Докажите, что высоты треугольника пересекаются в одной точке.
16)Докажите, что четырёхугольник является параллелограммом тогда и только тогда, когда его диагонали в точке пересечения делятся пополам.
17)Докажите, что в произвольном четырёхугольнике средние линии (т. е. отрезки, соединяющие середины противоположных сторон) точкой их пересечения делятся пополам.
18)Найти косинус угла между диагоналями прямоугольника, стороны которого равны a и b .
19)Докажите, что диагонали ромба взаимно перпендикулярны.
20)Докажите, что вписанный угол, опирающийся на диаметр окружности, — прямой.
21)Докажите, что если в треугольнике длины его сторон a , b , c связаны соотношением , то угол этого треугольника, лежащий против стороны длины c , — прямой.
22)Даны стороны a , b , c треугольника. Найдите медианы , , , проведённые к этим сторонам.
23)В треугольнике со сторонами a , b , c найти длину высоты , опущенную на сторону c .
24)В треугольнике со сторонами a , b , c найти длину биссектрисы , проведённой к стороне c .
25)Докажите, что сумма квадратов длин диагоналей параллелограмма равна сумме квадратов длин всех его сторон.
26)Докажите, что сумма квадратов длин диагоналей трапеции равна сумме квадратов длин её боковых сторон плюс удвоенное произведение длин оснований.
27)Доказать, что большей медиане треугольника соответствует меньшая сторона и обратно.
28)Докажите, диагонали прямоугольника равны между собой.
29)Докажите, что отрезок, соединяющий середины диагоналей трапеции, параллелен основаниям и равен их полуразности.
30)В четырёхугольнике ABCD прямая, проведённая через вершину A параллельна стороне BC , пересекает диагональ BD в точке M , а прямая проведённая через вершину B параллельно стороне AD , пересекает диагональ AC в точке N . Докажите, что MN || DC .
31)Четыре окружности радиуса R пересекаются по три в точках M и N , и по две в точках A , B , C , D . Докажите, что ABCD – параллелограмм.
32)Пусть K , L , M , N – середины отрезков AB , BC , CD , DE пятиугольника ABCDE , а точки P и Q – середины отрезков KM и LN соответственно. Докажите, что отрезок PQ в четыре раза меньше стороны AE и параллелен ей.
33)В плоскости даны четырёхугольник ABCD и точка M . Докажите, что точки, симметричные точке M относительно середин сторон этого четырёхугольника, являются вершинами параллелограмма.
34)На диагоналях AC и CE правильного шестиугольника ABCDEF взяты точки M и N соответственно, такие, что AM : AC = CN : CE = λ. Известно, что точки B , M , N лежат на одной прямой. Найдите λ.
35)Дан параллелограмм ABCD ( AD || BC , AB || CD ). На стороне AD выбрана точка K , а на AC – точка L так, что 5 AK = AD , 6 AL = AC . Докажите, что KL || BL и найдите отношение их длин.
36)Точки M и K на сторонах AB и BC треугольника ABC таковы, что AM : MB =3:4, CK : KB =2:3. Отрезки AK и CM пересекаются в точке N . Найдите отношение AN : NK .
37)Точка K на стороне AC и точки L , M на стороне BC треугольника ABC таковы, что AK : KC = CL : LB = BM : MC =1:2, N – середина стороны AC . Найти отношение, в котором точка пересечения отрезков KL и MN делит отрезок KL .
38)Через середину E медианы треугольника ABC проведена прямая AE , пересекающая сторону BC в точке F . Вычислить: AE : EF и CF : FB .
39)Дан параллелограмм ABCD . Точка M делит сторону AD в отношении p , т. е. AM : MD = p ; точка N делит сторону DC в отношении q , т. е. DN : NC = q . Прямые BM и AN пересекаются в точке S . Вычислить отношения AS : SN и BS : SM .
40)В параллелограмме ABCD сторона AD разделена на n равных частей и первая точка деления M (считая от A ) соединена с B . В каком отношении делит точка N диагональ AC и отрезок MB ?
41)В треугольнике ABC проведена медиана CM . Прямая l пересекает отрезки CA , CM , CB в точках , , соответственно. Докажите равенство .
42)На сторонах AC и BC треугольника ABC взяты точки M и D так, что AM = AC , BD = BC , а на прямой AD – точка N так, что AN = AD . Доказать, что точки M , N и B лежат на одной прямой. Какую часть от отрезка MB составляет отрезок MN ?
43)На стороне AD и диагонали AC параллелограмма ABCD взяты точки M и N так, что AM = AD , AN = AC . Доказать, что точки M , N и B лежат на одной прямой. В каком отношении делит точка N отрезок MB ?
44)На стороне AB треугольника ABC дана точка P , через которую проведены прямые параллельно его медианам A и A и пересекающие соответственно стороны треугольника в точках и . Докажите, что середина отрезка (точка E ), а также точка P и точка G пересечения медиан треугольника лежат на одной прямой и найдите отношение длин отрезков EG и EP .
45)Докажите, что точки пересечения диагоналей трапеции, боковых сторон, а также середины оснований лежат на одной прямой.
46)Через точку P – внутреннюю точку параллелограмма ABCD – проведены прямая KM || AD и прямая LN || AB , пересекающие стороны AB , BC , CD , DA параллелограмма в точках K , L , M , N соответственно. Q – точка пересечения средних линий четырёхугольника KLMN , S – точка пересечения диагоналей параллелограмма ABCD . Докажите, что Q – середина отрезка PS .
47)Пусть , , – середины сторон BC , AC , AB треугольника ABC . Доказать, что точки пересечения медиан треугольника ABC и треугольника совпадают.
48)Пусть ABCDEF – произвольный шестиугольник и U , V , W , X , Y , Z – середины его сторон. Докажите, что центры тяжести (т. е. точки пересечения медиан) треугольника UWY и треугольника VXZ совпадают.
49)Докажите, что прямая, соединяющая середины оснований трапеции, и продолжения боковых сторон трапеции пересекаются в одной точке.
50)На сторонах параллелограмма заданы точки, которые делят стороны в одном и том же отношении (в каком-либо одном направлении обхода). Докажите, что точки деления служат вершинами параллелограмма, а центры этих параллелограммов совпадают.
51)На сторонах треугольника заданы точки, которые делят стороны в одном и том же отношении (в каком-либо одном направлении обхода). Докажите, что точки пересечения медиан данного треугольника и треугольника, имеющего вершинами точки деления, совпадают.
52)В треугольнике ABC длины сторон связаны соотношением . Докажите, что медианы, проведённые к сторонам AC и BC , взаимно перпендикулярны.
53)Найдите косинус угла между медианами прямоугольного равнобедренного треугольника, проведёнными к его катетам.
54)Найти косинус угла между медианами равнобедренного треугольника, проведёнными к его боковым сторонам, при условии, что угол при вершине равен α.
55)Найти косинус угла при вершине равнобедренного треугольника, если медианы, проведённые к его боковым сторонам, а) перпендикулярны; б) образую угол .
56)В треугольнике две стороны равны 2 и 4, а угол между ними равен . Найти угол ψ между короткой стороной и медианой, проведённой к третьей стороне.
57)В окружности с центром O радиуса r вписан четырёхугольник ABCD . Доказать, что если , то диагонали четырёхугольника взаимно перпендикулярны.
58)В прямоугольнике ABCD опущен перпендикуляр BK на диагональ AC . Точки M и N – середины отрезков AK и CD соответственно. Докажите, что угол BMN прямой.
59)На стороне AB треугольника ABC с углом ABC , равным α , расположена точка K , причём AK = BC . Пусть P – середина BK , M – середина AC . Найдите угол APM .
60)Точка K – середина стороны AB квадрата ABCD , а точка M лежит на диагонали AC , причём AM : MC = 3 : 1. Докажите, что угол KMD равен .
61)На сторонах AB и AC треугольника ABC во внешнюю сторону построены квадраты AMNB и CKLA . Докажите, что медиана AP треугольника ABC перпендикулярна прямой ML .
62)На стороне AB треугольника ABC дана точка D . Выразить расстояние CD через длины сторон данного треугольника a , b , c и расстояния AD = m и DB = n .
63)Выразить расстояние от заданной точки O до точки M пересечения медиан треугольника ABC через длины сторон треугольника BC = a , AC = b , AB = c и расстояния от точки O до вершин треугольника OA = , OB = , OC = .
64)В параллелограмме ABCD точка K – середина стороны BC , а точка M – середина стороны CD . Найдите AD , если AK = 6, AM = 3, KAM = .
Список использованной литературы
Атанасян Л.С. и др. Геометрия. Учебник для 7-9 кл. общеобразовательных учреждений. – М.: Просвещение, 2003.
Атанасян Л.С., Бутузов В.Ф., Кадомцев С.Б. и др. Геометрия. 10-11 классы: учеб. для общеобразоват. учреждений: базовый и профил. уровни. – М.: Просвещение, 2009.
Бутузов В.Ф., Кадомцев С.Б., Позняк Э.Г., Шестаков С.А., Юдина И.И. Планиметрия. Пособие для углубленного изучения математики – М.: ФИЗМАТЛИТ, 2005.
Василевский А.Б. Методы решения геометрических задач. – Минск: Вышэйш. школа, 1965.
Габович И.Г. Алгоритмический подход к решению геометрических задач. – М.: Просвещение, 1996.
Гордин Р.К. Геометрия. Планиметрия 7-9 кл. – М.: МЦНМО, 2006.
Готман Э.Г., Скопец З.А. Решение геометрических задач аналитическим методом: Пособие для учащихся 9 и 10 кл. – М.: Просвещение, 1979.
Гусев В. А. и др. Практикум по элементарной математике: Геометрия: Учеб. пособие для студентов физ.-мат. спец. пед. ин-тов и учителей. – М.: Просвещение, 1992.
Зеленяк О. П. Решение задач по планиметрии. Технология алгоритмического подхода на основе задач-теорем. Моделирование в среде Turbo Pascal. – Киев, Москва: ДиаСофтЮП, ДМК Пресс, 2008.
Шарыгин И. Ф. Геометрия. 7 – 9 кл.: Учеб. для общеобразоват. учеб. завед. – М.: Дрофа, 2001.
Шарыгин И.Ф. Решение задач: Учеб. пособие для 10 кл. общеобразоват. учреждений. – М.: Просвещение, 1994.
Шестаков С. А. Векторы на экзаменах. Векторный метод в стереометрии. – М.: МЦНМО, 2005.