Графика и анимация |
В схемном окне проекта точка с координатами (0; 0) располагается в левом верхнем углу окна. Положительное направление оси X – слева направо, а положительное направление оси Y – сверху вниз.
Рисунок 1. Координатное пространство в схемном окне проекта
В окне графического редактора точка с координатами (0; 0) располагается в центре окна. Положительное направление осей аналогично схемному окну проекта: оси X – слева направо, оси Y – сверху вниз.
Рисунок 2. Координатное пространство в окне графического редактора
Для расчета видимых линейных размеров объектов, помещенных во вложенный квадратный контейнер, в исходном графическом контейнере, либо схемном окне можно рассчитать коэффициент преобразования по формуле:
K = Lконт / DLвнутр,
где К – искомый коэффициент преобразования,
Lконт – линейный размер контейнера в исходном окне,
DLвнутр – размер диапазона координат, отображаемого в графическом редакторе при редактировании контейнера.
Тогда видимый линейный размер для графического объекта можно рассчитать по формуле:
Lвид = K * Lисх,
где Lвид – искомый видимый линеный размер объекта, помещенного во вложенный контейнер,
Lисх – исходный линейный размер объекта в родительском графическом контейнере или схемном окне проекта.
На иллюстрации ниже показан отрезок длиной Lисх=200 единиц (ед.), помещенный в контейнер со сторонами Lконт=120 ед. При этом диапазон внутренних координат контейнера составляет DLвнутр=400 ед. Тогда коэффициент преобразования:
К = 120 / 400 = 0,3,
а видимая длина отрезка составит:
Lвид = 0,3 * 200 = 60 ед.
Рисунок 3. Сравнение внешнего вида объекта в исходном окне и его копии внутри графического контейнера, пример с квадратным контейнером
В общем случае для прямоугольного графического контейнера нужно рассчитать по аналогичным коэфиициенты масштабирования по каждой из двух сторон:
Kx = Lконт x / DLвнутр x,
Ky = Lконт y / DLвнутр y.
Видимый линейный размер объекта в графическом контейнере можно рассчитать по формуле:
Lвид = sqr((Kx * Lисх x)^2 + (Ky * Lисх у)^2)
На иллюстрации ниже показан отрезок длиной Lисх=200 ед., имеющий проекции Lисх x = 170 ед. и L исх y = 103 ед., и помещенный в контейнер со сторонами Lконт x=124 ед., Lконт y=68 ед. При этом диапазон внутренних координат контейнера составляет DLвнутр x=400 ед., DLвнутр y=200 ед. Тогда коэффициенты преобразования:
К x = 124 / 400 = 0,31,
К y = 68 / 200 = 0,34,
а видимые размеры проекций отрезка (после поворота на 30°) составят:
Lвид x = 0,31 * 170 = 52.7 ед.,
Lвид y = 0,34 * 103 = 35.02 ед.
И итоговая видимая длина отрезка:
L вид = sqr(52.7^2 + 35.02^2) ≈ 63 ед.
Рисунок 4. Сравнение внешнего вида объекта в исходном окне и его копии внутри графического контейнера, пример с прямоугольным контейнером с поворотом