Раскройте понятие векторной графики Растровое изображение (лат. rastrum — грабли) — изображение, представляющее собой сетку (мозаику) пикселей — цветных точек (обычно прямоугольных) на мониторе, бумаге и других отображающих устройствах. Особенность растрового изображения в том, что оно, как мозаика, складывается из маленьких ячейковых кусочков – пикселей. И чем выше разрешение, тем большее количество пикселей умещается на единицу площади. Растровые изображения используют для передачи плавного перехода цветов, множества оттенков. Наиболее распространенное применение – обработка фотографий, создание коллажей и т.п. Самый популярный редактор растровой графики – Photoshop.Растровое изображение занимает больше места на диске чем такое же, но исполненное в векторе. Но, тут очень важно помнить, что это справедливо, если вы «отрисовали текст», а если вы сфотографировали любимую девушку на фоне красного Феррари – вектор тут бессилен, только растр. Классификация растровых алгоритмов Алгоритмы машинной графики можно разделить на два уровня: нижний и верхний. Группа алгоритмов нижнего уровня предназначена для реализации графических примитивов (линий, окружностей, заполнений и т.п.). Эти алгоритмы или подобные им воспроизведены в графических библиотеках языков высокого уровня (BGI в Турбо - Паскале) или реализованы аппаратно в графических процессорах рабочих станций (Silicon Graphics и др.). К алгоритмам верхнего уровня относятся в первую очередь алгоритмы удаления невидимых линий и поверхностей. Задача удаления невидимых линий и поверхностей продолжает оставаться центральной в машинной графике. От эффективности алгоритмов, позволяющих решить эту задачу, зависят качество и скорость построения трехмерного изображения. К задаче удаления невидимых линий и поверхностей примыкает задача построения (закрашивания) полутоновых (реалистических) изображений, т.е. учета явлений, связанных с количеством и характером источников света, учета свойств поверхности тела (прозрачность, преломление, отражение света). Однако при этом не следует забывать, что вывод объектов в алгоритмах верхнего уровня обеспечивается примитивами, реализующими алгоритмы нижнего уровня, поэтому нельзя игнорировать проблему выбора и разработки эффективных алгоритмов нижнего уровня. Практическое задание. Створіть приклад, який демонструє відображення будь-якого тривимірного об'єкту. Код: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using SharpGL; namespace OpenGL_lesson_CSharp { public partial class SharpGLForm : Form { float rotation = 0.0f; public SharpGLForm() { InitializeComponent(); } private void openGLControl_OpenGLDraw(object sender, RenderEventArgs e) { OpenGL gl = openGLControl.OpenGL; gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT); gl.LoadIdentity(); gl.Rotate(rotation, 0.0f, 1.0f, 0.0f); gl.Begin(OpenGL.GL_TRIANGLES); gl.Color(1f, 0.2f, 0.0f); gl.Vertex(0.0f, 2.5f, 0.0f); gl.Vertex(2.0f, 1.5f, -2.0f); gl.Vertex(2.0f, 1.5f, 2.0f); gl.Color(1f, 0.3f, 0.0f); gl.Vertex(-2.0f, 1.5f, -2.0f); gl.Vertex(-2.0f, 1.5f, 2.0f); gl.Vertex(0.0f, 2.5f, 0.0f); gl.Color(1f, 0.4f, 0.0f); gl.Vertex(0.0f, 2.5f, 0.0f); gl.Vertex(2.0f, 1.5f, -2.0f); gl.Vertex(-2.0f, 1.5f, -2.0f); gl.Color(1f, 0.1f, 0.0f); gl.Vertex(0.0f, 2.5f, 0.0f); gl.Vertex(-2.0f, 1.5f, 2.0f); gl.Vertex(2.0f, 1.5f, 2.0f); gl.End(); rotation += 1.5f; } private void openGLControl_OpenGLInitialized(object sender, EventArgs e) { OpenGL gl = openGLControl.OpenGL; gl.ClearColor(0, 0, 0, 1); } private void openGLControl_Resized(object sender, EventArgs e) { OpenGL gl = openGLControl.OpenGL; gl.MatrixMode(OpenGL.GL_PROJECTION); gl.LoadIdentity(); gl.Perspective(60.0f, (double)Width / (double)Height, 0.01, 100.0); gl.LookAt( 5, 6, -7, 0, 1, 0, 0, 1, 0); gl.MatrixMode(OpenGL.GL_MODELVIEW); } } } Результат: |