Форум «Всё о Паскале» _ Задачи _ Масшабирование при рисовании фигур
Автор: samec 15.11.2008 14:57
Добрый день. есть пара функций:
{функции перевода из 3d в 2d} function CoordX(P: tPoint;zoom:real): integer; begin CoordX:=Trunc(centerX+(zoom*P.Y-zoom*P.X)); end; function CoordY(P: TPoint;zoom:real): integer; begin CoordY:=Trunc(centerY-(zoom*P.Z-zoom*P.X)); end;
все точки для рисования фигуры пользователь вводит сам в массив точек tPoint. Хотелось бы узнать, как в зависимости от того, какие значения координат точек ввел пользователь правильно выбрать zoom? Подскажите
Автор: Lapp 15.11.2008 15:54
Цитата(samec @ 15.11.2008 10:57)
Хотелось бы узнать, как в зависимости от того, какие значения координат точек ввел пользователь правильно выбрать zoom? Подскажите
Если я правильно понял, тебе нужна проекция на плоскость. И если я не ошибаюсь, то с учетом перспективы. По всей видимости, параметр zoom в приведенных тобой формулах выполняет (косвено) роль указания, на каком расстоянии от поскости прекции находится точка зрения. Сходу врубиться в твои формулы мне, честно гря, не удалось. Мне, извини, проще нарисовать свои. С объяснением . Надо?
Автор: volvo 15.11.2008 16:06
Если нигде не ошибся, то так: с учетом того, что все точки с координатами (CoordX, CoordY) должны помещаться на экране, имеем: