3d to 2d coordinates

Тема в разделе "WASM.GRAPHICS", создана пользователем piritus, 5 июл 2009.

  1. piritus

    piritus Member

    Публикаций:
    0
    Регистрация:
    7 июл 2007
    Сообщения:
    36
    Здравствуйте.
    Не могу понять, как переводится из 3d в 2d
    Например:
    [​IMG]
    Дан куб, длина стороны L=55мм
    Начало координат (x,y) совпадает с точкой О изометрии (x,y,z).
    Возьмем точку, лежащую на середине ближней грани куба, т.е. т(55;55;27,5).
    Если подставить в формулу:
    Xscr = X * ScreenDist / Z + ScrOriginX
    Yscr = Y * ScreenDist / Z + ScrOriginY
    то получим, что
    Xscr = ScreenDist * 55/27,5
    Yscr = ScreenDist * 55/27,5
    т.е. Xscr == Yscr
    Хотя на самом деле видно, что
    Xscr = 0
    Yscr = 27,5

    Где ошибка?
     
  2. JAPH

    JAPH New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2007
    Сообщения:
    124
    а разве это формулы для изометрии?
    у меня для ваших систем координат получается, что
    Xscr = (X-Y) sqrt(3) / 2,
    Yscr = (X+Y)/2 - Z,
    тогда ошибки не будет.

    Ваши формулы верны для центральной проекции с центром в начале координат (0,0,0)->(Xscr,Yscr) на плоскость Z = ScreenDist, при этом ось Z проецируется в точку (Xscr, Yscr), и экранная система координат оказывается правой, а не левой, как у вас.
     
  3. piritus

    piritus Member

    Публикаций:
    0
    Регистрация:
    7 июл 2007
    Сообщения:
    36
    Всё верно. Это именно то, что нужно.
    Благодарю Вас.