Здравствуйте, 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
/* на этом мысль иссякла, надо и поработать, однако... */