Zatem niech punkt E = (0, -8, 2) będzie kamerą. Załóżmy jeszcze, że punkt F będzie środkiem odcinka AB, czyli F = (0, -5), punkt G rzutem punktu E na płaszczyznę XY, czyli G = (0, -8). Stosując Twój przepis mamy:
- warunek Ay > Ey jest spełniony ponieważ -5 > -8.
-
“pz to odleglosc danego punktu od kamery w linii prostej”, czyli pz = sqrt((EFEF + GFGF) + EG*EG) = sqrt(17) = 4,123.
-
“px to x punktu odjac x kamery”, czyli -2 - 0 = -2.
-
“py to wysokosc punktu (0) odjac wysokosc kamery”, czyli 0 - 2 = -2.
Zatem otrzymujemy, że
sx = -2 / 4,123 = -0,485
sy = -2 / 4,123 = -0,485.
Czyli A’ = (-0,485, -0,485). Z symetrii punkt B’ = (0,485, -0,485). Długość A’B’ = 0,97. Długość AB = 4.
Licząc analogicznie otrzymamy, że D’ = (-0,15, -0,15) i C’ = (-0,15, -0,15). Długość C’D’ = 0,3. Długość CD = 4.
Zatem A’B’ jest trzy razy dłuższy niż C’D’ i A’B’ “podjechał” do góry, a C’D “zjechał” na dół.
Muszę poeksperymentować z ustawieniem kamery. Zobaczymy co uzyskam.
Proszę o sprawdzenie, czy dobrze zrozumieałem formuły, które podałeś.
A propos OpenGL. Nie chcę stosować armaty na muchę. Policzenie powyższego, jak widzę, wymaga kilku prostych działań.