|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Michael Ryazanov 2:5030/1006.64 23 May 2002 02:06:00 To : Alex Astafiev Subject : Re: 3d->2d -------------------------------------------------------------------------------- 21.05 15:17 Alex Astafiev, 2:5000/228.16@fidonet -> Michael Sedov <...> AA> return (ScreenCenter_X + m->x * eyefactor/ (m->z + distance); } AA> то есть screencenterx + (object_x * eyefactor) / (object_z + distance); AA> замечу, здесь (object_z + distance) - одно на два случая x и y. AA> const eyefactor - Field of View, fov, задает эффект рыбьего глаза. AA> const distance - дистанция от картинной плоскости. AA> для обьектов описаных в пространстве в координатах +-0...150, +-0...300 AA> подходящие eyefactor = 256 и distance = 300 примерно. Как запущено... Hачало координат лучше поместить прямо в глаз, чтобы потом не тратить время на сложение при отрисовке. Да и объекты логичнее размещать относительно точки обзора, а не какого-то там экрана. Итого: zd = zoom * dist; // эта константа вычисляется один раз k = zd / z; X = Xc + k * x; Y = Yc + k * y; где zoom = размер экрана в пикселях / размер экрана в у.е., dist = расстояние от глаза до экрана в у.е. Эти константы нужно позволить ввести пользователю самостоятельно. (За у.е. -- единицу длины в пространстве объектов -- удобно взять метры.) |V|uxau/\ --- -- - ъ * Origin: Ф И З Ф А К - Ч Е М П И О H ! (2:5030/1006.64) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/45633cec5468.html, оценка из 5, голосов 10
|