Уроки, алгоритмы, программы, примеры

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

У меня проблема вот с этим: gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);. Вылезает ошибка: CS1061 "object" не содержит определения "GL_COLOR_BUFFER_BIT", и не удалось найти доступный метод расширения "GL_COLOR_BUFFER_BIT",...
Большое спасибо. Единственный код который прошел без каких либо ошибок. Ура!!!
Скажите пожалуйста, подскажите алгоритм по которому по заданным точкам можно определить тип многогранника, скажем это куб или прямоугольный параллелепипед. Нашел теорию по этим фигурам: https://www.mat... https://www.mat... Акцентировать внимание...
Всем у кого не работает. файл wizard.script Ещё одно упоминание Glut32 в строке "if (!VerifyLibFile(dir_nomacro_lib, _T("glut32"), _T("GLUT's"))) return false;" меняем на "if (!VerifyLibFile(dir_nomacro_lib, _T("freeglut"), _T("GLUT's"))) return...
Не получается, емаё

Счетчики и рейтинг

Рейтинг@Mail.ru Яндекс.Метрика

Псевдоскалярным (или косым) произведением векторов a и b на плоскости называют число

ab = |a|•|b|• sin(φ),

где φ - угол вращения (против часовой стрелки) от a к b. Если хотя бы один из векторов нулевой, то полагают ab = 0.

Геометрически псевдоскалярное произведение векторов представляет собой ориентированную площадь параллелограмма, натянутого на эти вектора.

С её помощью удобно работать с площадями многоугольников, выражать условия коллинеарности векторов и находить углы между ними.

Основные свойства:
  1. Линейность: a ∧ (λb + μc) = λab + μac (λ, μ - произвольные вещественные числа).
  2. Антикоммутативность: ab != - ba.
  3. Ориентированная площадь треугольника ABC выражается формулой S = (ABAC) / 2, а его площадь равна модулю этой величины.
  4. ab = 0 - необходимое и достаточное условие коллинеарности ненулевых векторов на плоскости.
  5. Пусть заданы вектора a = (a1, a2), b = (b1, b2). Тогда их псевдоскалярное произведение равно ab = a1b2 - a2b1

Использование в геометрических задачах

Пример 1. Определить взаимное расположении точки и прямой: лежит выше прямой, на прямой, под прямой.

Косое произведение двух векторов положительно, если поворот от первого вектора ко второму идет против часовой стрелки, равно нулю, если векторы коллинеарны и отрицательно, если поворот идет по часовой стрелки. Поэтому достаточно посчитать косое произведение векторов P1P2 и P1M и по его знаку сделать вывод.

Пример 2. Определить, принадлежит ли точка отрезку.

Пусть точки P1(x1, y1), P2(x2, y2) - концы заданного отрезка. Необходимым условием принадлежности точки отрезку является ее принадлежность прямой проходящей через P1, P2. Далее нужно определить лежит ли точка между точками P1 и P2. Для этого используем скалярное произведение векторов MP1, MP2. Если оно меньше либо равно нуля, то точка лежит на отрезке, иначе вне отрезка.

Итак, для того чтобы точка M(x, y) лежала на отрезке с концами P1(x1, y1), P2(x2, y2) необходимо и достаточно выполнения условий:
1. [P1P2, P1M] = 0 – косое произведение (точка лежит на прямой);
2. (MP1, MP2) ≤ 0 – скалярное произведение (точка лежит между P1 и P2).

Пример 3. Определить, пересекаются ли две прямые (прямые не совпадают).

Если прямые заданы точками P1(x1, y1), P2(x2, y2), M1(x3, y3), M2(x4, y4), то условие их параллельности заключается в проверки косого произведения векторов P1P2 и M1M2: если оно равно нулю, то прямые параллельны, иначе - пересекаются.

Пример 4. Определить, пересекаются ли два отрезка.

Отрезки пересекаются тогда, когда, концы каждого отрезка лежат по разные стороны от другого отрезка. Посмотрим на рисунок:

Необходимо проверить, лежат ли концы каждого из отрезков по разные стороны относительного концов другого отрезка. Применим косое произведение векторов. Посмотрим на первый рисунок: [P1P2, P1M2] * [P1P2, P1M1] < 0 и [M1M2, M1P1] * [M1M2, M1P2] < 0. Важно обратить внимание на строгое неравенство, потому что возможен случай, при котором произведение равно нулю, но отрезки не пересекаются (отрезки лежат на одной прямой, но не имеют общих точек). Поэтому необходимо проверить, принадлежит ли хотя бы один конец каждого отрезка другому.