|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Alex Astafiev 2:5000/228.16 21 May 2002 15:17:19 To : Michael Sedov Subject : 3d->2d -------------------------------------------------------------------------------- DM>> Как зная кооpдинаты точки (x,y,z) постpоить ее на плоскости oxy. DM>> Т.е. от тpехмеpных кооpдинат пеpейти к двумеpным. MS> MS> Hе это ли ты хотел услышать? MS> MS> struct point MS> { MS> float x, y, z; MS> }; MS> MS> int get2dx(point * m) {return (getmaxx()/2 + floor(m->x*d/(m->z + MS> d)));} MS> MS> int get2dy(point * m) {return (getmaxy()/2 - floor(m->y*d/(m->z + MS> d)));} MS> MS> d - большая константа. Запатунно, зачем вызывать getmaxx(), когда это центр экрана, и зачем здесь вызов floor()? Более правильно, return (ScreenCenter_X + m->x * eyefactor/ (m->z + distance); } то есть screencenterx + (object_x * eyefactor) / (object_z + distance); замечу, здесь (object_z + distance) - одно на два случая x и y. const eyefactor - Field of View, fov, задает эффект рыбьего глаза. const distance - дистанция от картинной плоскости. для обьектов описаных в пространстве в координатах +-0...150, +-0...300 подходящие eyefactor = 256 и distance = 300 примерно. --- * Origin: Alex Raider/ Flash inc. 1992-2002 (2:5000/228.16) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/174643cea74b2.html, оценка из 5, голосов 10
|