Re: Детская задачка для скучающих
От: Кодт Россия  
Дата: 02.03.17 11:20
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Есть два прямоугольника один со сторонами a,b и второй со сторонами c,d

_>Надо написать функцию проверки: можно ли разместить второй внутри первого

Обойдёмся без тригонометрии (точнее, спрячем её внутрь квадратных уравнений)



Дано: C, D — константы, и давайте сразу отнормируем их так, что C = 1, C <= D. Соответственно отнормируем A и B, и пусть A <= B.

Сx — переменная, 0 <= Cx <= 1. Прозорливый читатель узнает в этой величине синус угла поворота.
Cy = √(1-Cx²). Это, соответственно, косинус.
Dy = D·Cx
Dx = D·Cy = D·√(1-Cx²)

Получаем три уравнения
0 <= Cx <= 1
Cx + Dx <= A
Cy + Dy <= B

Cx + D·√(1-Cx²) <= A
D²·(1-Cx²) <= (A-Cx)²
(1-Cx²) <= (A-Cx)²

D·Cx + √(1-Cx²) <= B
(1-Cx²) <= (B-Cx·D)²
(1-Cx²)·D² <= (B-Cx·D)²·D²

Вычтем:
0 <= (A-Cx)²-(B-Cx·D)²·D²
(A-Cx)² <= (B-Cx·D)²·D²
A-Cx <= (B-Cx·D)·D
A-B·D <= Cx·(1-D)

(B·D-A)/(D-1) <= Cx <= 1

/* на этом мысль иссякла, надо и поработать, однако... */
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.