Координаты компьютерной графики с glu (OpenGL)

Мне трудно понять, как работает система координат в glu, нужно решить несколько проблем.

GLJPanel canvas = new GLJPanel();
frame.setSize(400,600); // Size in pixels of the frame we draw on
frame.getContentPane().add(canvas);

glu.gluOrtho2D(-100.0, 100.0, -200.0, 200.0);

gl.glViewport(100,100,200,300);

Если точка имеет мировые координаты (-50,-75), каковы ее координаты в системе координат окна просмотра?

и еще один (не совсем конкретный код):

gluOrtho2D(-1.0, 0.0, -1.5, 0.0) and glViewport(0,300,200,300)
gluOrtho2D(0.0, 1.0, 0.0, 1.5) and glViewport(200,0,200,300)

Где должны быть расположены две усеченные кривые джинна?

Теперь я думаю, что смогу решить их, но не понимаю, как работает система координат.


person Javaturtle    schedule 05.02.2016    source источник


Ответы (1)


Мировые координаты произвольны, и вы можете их выбрать. В данном случае (-50, -75).

Матрица MVP и преобразование проекции преобразуют их в координаты пространства отсечения, которые варьируются от (-1, -1, -1) до (+1, +1, +1). В данном случае (-0,5, -0,375). На это преобразование влияет использование вами gluOrtho2D() или, в более современных программах, выходных данных вершинного шейдера.

Координаты окна просмотра — это пиксели, в данном случае от (100, 100) до (300, 400). Вы просто масштабируете координаты пространства клипа для преобразования. Центры пикселей расположены в полуцелых координатах, поэтому нижний левый пиксель окна находится в точке (0,5, 0,5). Ваша точка находится в точке (200, 193,75). На это преобразование влияет использование glViewport().

Я понятия не имею, что такое "кривая джинна".

person Dietrich Epp    schedule 05.02.2016
comment
У меня есть фотография, которую я загружаю, чтобы показать, когда у меня будет шанс. Спасибо за объяснение. - person Javaturtle; 05.02.2016