Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Как отрисовать точки с известными координатами |
Автор: Dementor 2.11.2013, 10:41 |
Всем привет! Я сразу извиняюсь за возможно глупые вопросы, но перекопав кучу уроков в сети я так и не нашел на них ответов (либо просто не понял). Вопрос номер один - что вообще нужно сделать, чтобы нарисовать точку с координатами X=935929.50; Y=6638894.24; Z=850.55. Вопрос номер два - есть ли какая-то литература (книги или уроки), в которой есть описание как нарисовать что-то мышкой (например полигон). Буду очень признателен за любую помощь. P.S. Для учебы я использую C++ Builder 6. |
Автор: Bitter 2.11.2013, 16:16 | ||
Вы перекопали кучу уроков и не поняли как нарисовать примитив? Не верю. Скорее всего вы ничего не перкапывали, а посмотрели один два примера про куб и освещение и на этом все. Как на счет
Описание как нарисовать мышкой? Ну это кагбэ... берете мышку, берете форму или что там у вас, водите по форме мышкой и отлавливаете ее координаты, по которым рисуете линии. Вот вам и все описание. |
Автор: Dementor 2.11.2013, 16:56 | ||
Как именно грузить точки, линии, полигоны и все остальное я в курсе. Я не понимаю как настроить вид так, чтобы я видел эту точку. Во всех уроках указывается, что необходимо прописывать настройки OpenGL в FormCreate и FormResize, ну и плюс настройка пикселей и высвобождение при закрытии формы. У меня сейчас прописаны такие параметры:
|
Автор: Bitter 2.11.2013, 19:49 |
Вот у вас в формРесайзе написано glFrustum ( -1 , 1, -1 , 1 , 1.25 , 100.0 ); Если бы вы прошли по первой попавшейся ссылке в гугле по запросу "glFrustum", то увидели бы, что первый и второй параметры это координаты левой и правой отсекающей. Это значит что левая чать окна у вас будет соответствовать мировой координате по Х = -1, а правый край окна (а точнее вьюПорта, который вы указали методом glViewport) будет соответствовать мировой координате по Х = 1. То же самое касается верхней и нижней отсекающей. Последние два параметра это ближняя к "камере" и дальняя отсекающие. То есть все что вы пытаетесь рисовать ЗА этими координатами на экран не попадет. Следующий фактор это позиция камеры, устанавливаемая функцией gluLookAt. Вбиваем в гугл и видим первые три параметра - eyeX, eyeY, eyeZ. то есть координаты камеры. Вы установили ее в 5 5 5. следующие три параметра это centerX, centerY, centerZ, то есть точка, в которую смотрит камера. Если вы рисуете точку в 935929.50, 6638894.24, 850.55, то вы ее не увидите, так как она выходит за границы вашей пирамиды видимости. Чтобы рисовать "как будто бы" на окне, нужно как минимум задать frustum равный размерам окна, после чего установить камеру на правильном расстоянии от нуля, и направить ее взгляд в 0, и не забыть про то что в таком случае вектор Up, который описывается тремя последними параметрами метода gluLookAt должен быть направлен вдоль оси Y, то есть быть 0, 1, 0, иначе у вас камера будет думать что у нее макушка на заднице. Но и этого может быть не достаточно, не забывайте что еще несть настройки материала и освещения |
Автор: EgoBrain 5.11.2013, 03:31 |
Bitter, можно подробнее о векторе Up, что он определяет. И почему ? |
Автор: Bitter 5.11.2013, 11:50 |
EgoBrain, этот вектор указывает куда направлен верх камеры. Например когда вы делаете фотки фотоаппаратом, вы можете снимать в обычном горизонтальном режиме (в этом случае верх фотоаппарата направлен в небо) и в вертикальном режиме (в этом случае верх камеры направлен в сторону), точно так же и тут. ![]() Если вектор Up будет указан не правильно, например указывать назад, то камера будет вести себя неадекватно, при перемещении камеры картинка может переворачиваться, крутиться и тд |
Автор: Dementor 5.11.2013, 12:45 |
Bitter, а вы не могли бы привести конкретные настройки для точек, которые находятся в пределах: MinX=938059.99 MaxX=940978.32 MinY=6641968.24 MaxY=6646082.34 MinZ=840.12 MaxZ=912.11. |
Автор: Pavia 5.11.2013, 17:36 |
Dementor, Это проще сделать в любом 3D редакторе а после экспортировать параметры. Кстати точность цифр выходит за Single. Зачем вам такие большая точность? |
Автор: Dementor 5.11.2013, 19:02 |
Pavia, Это реальные координаты точек на земной поверхности. Я просто решил попробовать нарисовать не сферы, которые по таймеру крутятся, а что-то реальное... По поводу 3D-редактора я как-то не подумал. |