Обнаружение столкновений между кругом и прямоугольником в 2d

Описанная окружность

Возможна и ситуация, при которой не окруж-ть вписана в многоуг-к, а наоборот, многоуг-к в окруж-ть. В таком случае все его вершины будут лежать на окруж-ти.

Есть несколько важных теорем, касающихся описанных окружностей.

Для доказательства построим в произвольном ∆AВС серединные перпендикуляры. Они пересекутся в некоторой точке О:

Каждая точка, лежащая на серединном перпендикуляре, равноудалена от концов отрезка, к которому этот перпендикуляр проведен. Значит, и точка О равноудалена от вершин ∆AВС:

OA = OB = OC

Но тогда из О можно провести окруж-ть, на которой будут лежать точки А, В и С. Она как раз и окажется окружностью, описанной около треугольника. Так как серединные перпендикуляры пересекаются только в одной точке, то и окруж-ть около треуг-ка можно описать лишь одну.

Из теоремы следует важный вывод:

Действительно, три точки, не лежащие на прямой, образуют на плоскости треуг-к.Окруж-ть, проведенная через его вершины, по определению и будет описанной окруж-тью.

Задание. Около равнобедренного треуг-ка с основанием длиной 6 описана окруж-ть радиусом 5. Какова длина боковых сторон этого треуг-ка?

Решение: Проведем радиусы ОА, ОВ и ОС к вершинам вписанного треуг-ка, а на основание ВС опустим перпендикуляр:

Стоит обратить внимание, что точки А, О и Н лежат на одной прямой. Это высота, проведенная к основанию

Она же, по свойству равнобедренного треуг-ка, является медианой, то есть Н – середина ВС. Тогда ОН оказывается серединным перпендикуляром.

Сначала найдем ВН, он равен половине ВС:

BH = BC:2 = 6:2 = 3

Далее изучим ∆ОНВ. Он прямоугольный, то есть для него верна теорема Пифагора:

Задание. Выведите формулу, которая связывает длину стороны равностороннего треуг-ка с радиусом описанной окружности.

Решение. Обозначим буквой a сторону треуг-ка, а буквой R – радиус описанной окруж-ти. Также проведем один серединный перпендикуляр:

Так как ∆AВС – равносторонний, то все его углы, в частности, ∠AВС, составляют 60°.

Заметим, что ∆ВОС и ∆АОВ равны по трем одинаковым сторонам, поэтому

В четырехуг-к окруж-ть удается вписать не всегда. Для этого должно соблюдаться одно условие:

Действительно, пусть около четырехуг-ка ABCD описана окруж-ть:

Тогда вся окруж-ть может быть разбита на две дуги: ⋃ВАD и ⋃ВСD. Их сумма составляет 360°:

Аналогично доказывается утверждение и для другой пары противоположных углов, ∠ADC и ∠ABC.

Обратное утверждение также справедливо:

Докажем эту теорему методом от «противного». Пусть есть четырехуг-к AВСD, у которого сумма противоположных углов составляет 180°, но вокруг него нельзя описать окруж-ть. Тогда проведем окруж-ть через любые три его вершины. Четвертая вершина (пусть это будет D) не может оказаться на окруж-ти. То есть она находится либо внутри окруж-ти, либо вне ее. Сначала рассмотрим случай, когда точка оказывается внутри окруж-ти:

Продолжим прямые AD и CD до пересечения окруж-ти в точках А’ и C’, а потом выберем произвольную точку D’ на окруж-ти между ними.

Теперь сравним ∆АСD и ∆АСD’. У обоих сумма углов одинакова и составляет 180°:

Получается, что ∠D и ∠D’ должны быть равны, но ранее мы показали, что ∠D больше. Это противоречие означает, что точка D не может быть внутри окруж-ти. Аналогичным образом рассматривается второй случай, когда D лежит вне окруж-ти:

Здесь, рассматривая ∆АСD и АСD’, можно показать, что ∠D меньше, чем ∠D’. Однако они должны быть равны друг другу, ведь в сумме с∠В должны давать 180°.             

Задание. В окруж-ть вписан четырехуг-к AВСD, причем∠А составляет 110°, а ∠В – 62°. Найдите два других угла четырехуг-ка.

Решение. 

Здесь надо просто использовать тот факт, что противоположные углы в AВСD должны давать в сумме 180°:

Задание. Докажите, что если трапеция вписана в окруж-ть, то она равнобедренная.

Решение.

Пусть в окруж-ть вписана трапеция AВСD, причем AD и ВС– ее основания. Тогда∠А и ∠В – это односторонние углы при параллельных прямых ВС и AD и секущей AВ, и в сумме они дают 180°. Но так как AВСD вписана в окруж-ть, то и ее противоположные углы, ∠А и ∠С, также должны составлять в сумме 180°:

∠А + ∠B = 180°

∠А + ∠C = 180°

Естественно, эти равенства могут одновременно справедливыми только в том случае, если∠В и ∠С одинаковы. Они являются углами при основании трапеции. Если они одинаковы, то трапеция – равнобедренная (это признак равнобедренной трапеции).

Серединный перпендикуляр

Введем новое понятие – серединный перпендикуляр.

На рисунке О – это середина AВ. Через нее проведена прямая m, образующая прямой угол с AВ. Тогда по определению m – это серединный перпендикуляр:

Рассмотрим две теоремы, которые связаны с серединным перпендикуляром и являются обратными друг для друга.

Сначала рассмотрим первое утверждение. Пусть точка М находится на серединном перпендикуляре, проведенному к AВ. Нам надо

Изучим∆АОМ и ∆ВОМ. Они прямоугольные, имеют одинаковые катеты АО и ОВ (ведь О – середина AВ) и общий катетОМ. Получается, что ∆АОМ и ∆ВОМ равны. Значит, одинаковы и отрезки АМ и МВ, ч. т. д.

Во второй теореме уже изначально известно, что

AM = MB

Надо доказать, что М принадлежит серединному перпендикуляру. Изучим∆АМВ, он равнобедренный, ведь АМ = МВ. Теперь из М опустим медиану МО на AВ. ∆АМВ – равнобедренный, поэтому эта медиана окажется также и высотой. Получается, что отрезок ОМ перпендикулярен AВ и одновременно делит его пополам. Значит, ОМ – это серединный перпендикуляр.

Из этих двух теорем вытекает важное утверждение:

Действительно, в ∆AВС проведем серединные перпендикуляры к сторонам треугольника AВ и АС:

Здесь N и K – середины сторон AN и AC, а О – точка пересечения серединных перпендикуляров в треугольнике. Так как О лежит на серединном перпендикуляре, проведенному к AВ, то справедливо равенство

AO = OB

Аналогично О равноудаленная от вершин А и С, ведь она лежит на серединном перпендикуляре, проведенному к АС:

AO = OC

В итоге можно составить двойное равенство:

OC = AO = OB

Оно показывает, что О также расположена на одном расстоянии от В и С. Отсюда вытекает, что она должна принадлежать серединному перпендикуляру, проведенному к ВС, ч. т. д.

4 ответа

5

(Edit: метод выше работает только для квадратного AABB, мне нужно подумать о том, как его улучшить, извините)

Самый быстрый способ:
— A) контрольный круг против внешнего ограничивающего круга прямоугольника -> отклоните, если слишком далеко.
— B) контрольный круг против внутреннего ограничивающего круга прямоугольника -> принимайте, если достаточно близко.
— C) проверьте, что внешняя точка круга (на линии, соединяющей оба центра) находится в AABB.


Чтобы сделать это быстро, предопределите внутренний, внешний радиус для ваших AABB.

Некоторые псевдокоды для иллюстрации:

В большинстве случаев они не пересекаются, поэтому у вас очень мало операций.
В некоторых из оставшихся случаев они будут пересекаться с внутренним радиусом, поэтому снова несколько операций.

1

Предполагая, что случай 1 означает, что центр center окружности находится в боковой области, а случай 2 означает центр круга в угловой области, этот подход имеет проблема.

В частности, когда круг только едва находится в угловой области, квадрат рассматривается как более крупный. Если бы круг падал на квадрат, он внезапно пересекал бы. Поведение со временем идет нелинейным …

То, что вы действительно хотите для случая 2, состоит в том, чтобы рассматривать вершины AABB как круг радиуса нуль. (вам нужно было бы проверить только вершину для текущей угловой области.)

(Кроме того, метод, который вы описываете, становится асимметричным на прямоугольных AABB, длинные стороны будут выпучиваться больше, чем короткие стороны, когда они приближаются кругом.)

1

Я долго думал об этой проблеме и смотрел на некоторые ответы здесь и на других форумах. Я придумал следующую идею:

Предположим, что круг имеет радиус .
При просмотре случаев, когда круг сталкивается с AABB, центр круга должен находиться в определенной области вокруг AABB. Крайние случаи — когда центр содержится в прямоугольнике, то, очевидно, происходит столкновение. Или если расстояние между центром и внешним кругом на прямоугольнике больше, чем , то столкновения, очевидно, не произошло. Но как насчет промежуточных случаев?

Идея состоит в том, чтобы найти крайние точки для того, чтобы центр круга лежал. Это точки, в которых круг расположен таким образом, что он просто касается прямоугольника в одной точке. Если мы проследим все такие экстремальные точки, получим примерно следующее изображение:

Как мы видим, множество экстремальных точек вычерчивает округленный прямоугольник вокруг AABB, этот округленный прямоугольник — это точно множество точек, которые являются расстоянием из AABB. На самом деле, столкновение возникает тогда и только тогда, когда центр круга находится внутри этого закругленного прямоугольника. Итак, теперь мы уменьшили проблему до проверки того, находится ли точка внутри закругленного прямоугольника.

С этой целью мы можем разделить округленный прямоугольник на 6 частей (4 круга с центрами на вершинах AABB и 2 прямоугольника):

4 зеленых круга одинаковы по размеру (все с радиусом ), а также два прямоугольника. Кроме того, пересечение красного прямоугольника и синего прямоугольника — это именно AABB. Поэтому, если центр круга находится внутри любой из этих 6 фигур, возникает столкновение. Если центр круга не находится ни в одной из этих 6 форм, то столкновения не происходит.

Обратите внимание, что этот метод не требует центра AABB (хотя у вас уже будет такая информация) и зависит только от центра и радиуса круга. Я не уверен, что мне не хватает некоторых случаев, но если вы используете комбинацию теста AABB AABB, а затем проверьте, не превышает ли расстояние между любыми из четырех вершин AABB до центра круга меньше радиуса круга, не покрывает ли он все случаи? NVM, вам нужно проверить ось, которая находится от центра круга до ближайшей вершины AABB, меньше радиуса круга

Я не уверен, что мне не хватает некоторых случаев, но если вы используете комбинацию теста AABB AABB, а затем проверьте, не превышает ли расстояние между любыми из четырех вершин AABB до центра круга меньше радиуса круга, не покрывает ли он все случаи? NVM, вам нужно проверить ось, которая находится от центра круга до ближайшей вершины AABB, меньше радиуса круга.

Это должно работать:

Точка пересечения биссектрис в треугольнике

Напомним, что для каждой прямой и точки можно вычислить расстояние между ними. Оно представляет собой длину перпендикуляра, который из точки проведен к этой прямой.

Если есть пара прямых и одна точка, то можно определить расстояние от точки до каждой из прямых. В случае, когда эти расстояния одинаковы, точку называют равноудаленной от обеих прямых.

Например, на этом рисунке длины AВ и ВС одинаковы, а потому точка А – равноудаленная от прямых m и n.

Сформулируем важную теорему.

Для доказательства опустим из произвольно выбранной точки М, принадлежащей биссектрисе ∠AВС, расстояния МК и МL на AВ и ВС:

Сравним ∆ВКМ и ∆ВМL. Это два прямоугольных треуг-ка, у которых общая гипотенуза ВМ, а также одинаковы острые углы ∠МВL и ∠KBM (они одинаковы, ведь биссектриса по определению разбивает угол пополам). Тогда ∆BKM и ∆BLM равны, и отрезки КM и МС также одинаковы, ч. т. д.

Верно и обратное утверждение.

Для доказательства можно использовать тот же рисунок. Пусть точка М находится на одинаковом расстоянии от ВК и ВL. То есть КМ = МL. Тогда ∆ВКМ и ∆ВМL снова оказываются равными, но уже как прямоугольные треуг-ки с одинаковыми катетом и гипотенузой. Из равенства треуг-ков вытекает, что

Действительно, если в ∆AВС построить биссектрисы ∠А и ∠В, то они должны будут пересечься в какой-нибудь точке О:

Опустим из О перпендикуляры на все стороны треуг-ка. Так как О принадлежит биссектрисе ∠А, то она находится на одинаковом расстоянии от АС и AВ, то есть

Из него следует, что О также находится на одном расстоянии от АС и ВС и потому принадлежит биссектрисе ∠С. Получается, что О – общая точка для всех трех биссектрис ∆AВС.

Точка пересечения высот треугольника

Следующая теорема касается высот треуг-ка.

Для доказательства выполним такое построение – через вершины ∆AВС проведем прямые, которые будут параллельны сторонам ∆АВС. Они образуют новый ∆А1В1С1:

Из условий AВ||A1В1 и АС||А1С1 вытекает, что четырехуг-к АСА1В – это параллелограмм. Значит, у него одинаковы противоположные стороны:

Аналогично можно показать, что четырехуг-ки AВСВ1 и АСВС1 – также параллелограммы, откуда вытекают равенства:

Теперь обозначим на рисунке все отрезки, равные AВ, одной черточкой, отрезки, равные ВС – двумя чертами, в тремя черточками отметим те отрезки, равные АС:

Получается, что А, В и С являются серединами сторон А1В1, А1С1 и В1С1. Построим в ∆А1В1С1 серединные перпендикуляры. Они по определению будут проходить через середины А, В и С и при этом будут иметь общую точку О:

Заметим, что проведенные перпендикуляры будут также перпендикулярны сторонам исходного ∆AВС. Например, ОВ⊥А1Си А1С1|| АС, значит, ОВ⊥АС (прямая, перпендикулярная одной из двух параллельных прямых, будет перпендикулярна и второй прямой). Аналогично можно продемонстрировать, что АО⊥ВС, а СО⊥AВ. Другими словами, прямые АО, ВО и СО оказываются высотами, и при этом они пересеклись точке О. Так как ∆AВС был выбран произвольно, то получается, что в любом треуг-ке высоты пересекутся в одной точке, ч. т. д.

Ранее, изучая подобие треуг-ков, мы уже выяснили, что и медианы треуг-ка будут пересекаться в одной точке. В итоге можно сформулировать следующее утверждение:

Задание. На рисунке ∠MKN = 66°. Вычислите величину ∠FNO.

Решение. Судя по рисунку, в точке О пересекаются высоты MF и KE. Но тогда и прямая ON также должна быть высотой. Достроим рисунок с учетом этого факта:

Теперь на рисунке множество прямоугольных треуг-ков. Напомним, что у каждого из них острые углы в сумме составляют 90°. Например, в ∆MKF

Ответ: 24°.

Задание. В ∆AВС биссектрисы АА1 и ВВ1 пересеклись в точке М, причем ∠АМВ = 128°. Вычислите ∠МСВ1.

Решение. Изучим ∆АМВ. В сумме его углы должны составлять 180°:

Ясно, что МС – это биссектриса ∠АСВ, ведь она проходит через общую точку двух других биссектрис ∆AВС. То есть МС делит ∠АСВ пополам:

Задание. На рисунке RO = 20. Вычислите длину OK:

Решение. На рисунке видно, что OM и ON – это серединные перпендикуляры. Отсюда вытекает, что точка О равноудалена от ОР и OR:

OP = OR = 20

Теперь можно рассмотреть ∆РОК. Он прямоугольный, и в нем есть ∠30°. Напомним, что катет, лежащий против такого угла, вдвое короче гипотенузы:

OK = OP/2 = 20/2 = 10

Ответ: 10.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: