Описание методов и алгоритмов рисования эллипса в HTML5 Canvas и определения его площади (в пикселах)

Содержание

  1. Постановка задачи
  2. Используемые методы и свойства HTML5 Canvas
  3. Алгоритм построения эллипса
  4. Площадь эллипса и ошибка её определения


Введение

В последнее время для морфометрических измерений в гидробиологии всё чаще используются возможности компьютерной 2D-графики. Особый интерес в этой связи представляют возможности веб-технологий (web) для использования в так называемых "облачных" вычислениях.

Рассматриваемый пример использования web посвящён проверке возможности расчёта площади эллипса по его растровому изображению, помещённому в элемент HTML5 Canvas [1,2]. Площадь в данном примере рассчитывается в пикселах. Для расчётов используется программы (скрипты), написанные на языке Javascript, с использованием свойств и методов программного интерфейса (API) HTML5 Canvas.

Зачем рассматривается этот пример? Во-первых, из-за необходимости исследовать зависимость точности определения площади от типа монитора. Изображение, представляемое средствами HTML5 Canvas, является растровым изображением (не векторным). Элементарная неделимая точка растра - пиксел. Пиксел - это квадрат, длина стороны которого зависит от разрешения экрана используемого монитора (дисплея).
Во-вторых, элемент HTML5 Canvas отображается не совсем одинаково в разных браузерах.

HTML5 Canvas стал поддерживаться браузерами относительно недавно и, несмотря на бум посвящённых ему публикаций, примеров его применения в различных предметных областях ещё недостаточно. В то же время привлекает доступность и лёгкость использования свойств и методов этого элемента по сравнению с другими, более "тяжёлыми" технологиями (например, WebGL [4,5]).

Данный пример позволяет выполнить эксперименты по определению точности расчёта площади фигур разных размеров, помещаемых в HTML5 Canvas, с использованием различных браузеров и мониторов.

На эллипс похожи формы раковин некоторых двустворчатых моллюсков, поэтому эксперименты с этим примером являются одним из этапов исследования возможности морфометрических web-измерений раковин двустворчатых моллюсков по их цифровым изображениям.

1. Постановка задачи

Задача состоит в построении тестовой геометрической фигуры средствами API HTML5 Canvas с использованием языка Javascript и в приближённом вычислении площади этой фигуры по её растровому представлению (площади растровой фигуры). В качестве такой фигуры взят эллипс. Точную величину площади эллипса можно определить по аналитической формуле (площади геометрической фигуры).

Отношение приближённой и точной площадей позволяет вычислить относительную ошибку определения площади по растровому изображению.

2. Используемые методы и свойства API HTML5 Canvas

Canvas (русс. - холст) встраивается в HTML-документ с помощью тэга <canvas>...</canvas>

К этому тэгу, как и к другим тэгам, можно обращаться из скриптов, как к объекту доменной модели или по имени. Все свойства и методы API содержатся в так называемых контекстах - объектах, посвящённых какому-то типу графики. Мы будем использовать контекст для работы с 2D-изображениями. Этого достаточно, хотя эти и другие, более развитые методы, имеются в контексте для работы с 3D.

Итак, встраиваем элемент Canvas в HTML-документ и получаем его в скрипте, как объект. Затем получаем 2D-контекст для этого объекта:

Координаты холста отсчитываются от точки x=0, y=0, находящейся в левом верхнем углу (начало координат или начало отсчёта). Координаты увеличиваются в горизонтальном направлении вправо и в вертикальном - вниз. Каждая координата обозначает местонахождение соответствующего пиксела.

Обо всех свойствах и методах API HTML5 Canvas и примерах их применения можно узнать в многочисленных источниках, например, здесь [1,2,3]. Ниже кратко рассмотриваются лишь свойства и методы API HTML5 Canvas, используемые в наастоящем примере.

3. Алгоритм построения эллипса

Для построения эллипса используется метод преобразования окружности, который должен быть известен вам из школьной геометрии.

4. Площадь эллипса и ошибка её определения

Площадь эллипса, как геометрической фигуры, вычисляется по известной формуле и не требует пояснений. Вот код функции, реализующей получение геометрической площади.

По помещённому ниже коду функции, реализующей определение площади эллипса, представленном в растровом виде, также не трудно понять, как это делается.

Заключение

В результате получен HTML-документ со встроенными скриптами, позволяющий провести эксперименты по определению площадей для эллипсов различных размеров, в различных браузерах и мониторах. Ниже представлена таблица, полученная студентами группы МК-1 (2012-го года поступления). На основании данных этой таблицы можно заключить ... (продолжение следует)

Использованные источники

    Про HTML5 Canvas

  1. Canvas. Краткий обзор: http://codestorage.ru/vvedenie-v-canvas-2d-api/
  2. Canvas. Обзор с примерами: http://www.pixelcom.crimea.ua/rukovodstvo-po-html5-canvas.html
  3. Canvas. Сводка методов и свойств: http://webonrails.ru/articles/html5/189/

    Ссылки по WebGL API для Canvas HTML

  4. Введение в WebGL (англ.):http://dev.opera.com/articles/view/an-introduction-to-webgl/
  5. Постобработка изображений с WebGL с использованием texImage2D в Canvas HTML:http://css-live.ru/articles/postobrabotka-izobrazhenij-i-video-s-webgl.html

    Ссылки по работе с изображениями на экранах различного разрешения

  6. Типы мониторов с различным разрешением:http://ru.wikipedia.org/wiki/Разрешение_(компьютерная_графика)
  7. Расчёт разрешения в ppi (англ. pixels per inch):http://ru.wikipedia.org/wiki/Ppi
  8. Диагональ и разрешение различных мониторов:http://www.kreker.org/my/16
  9. Калькулятор разрешения вашего монитора:http://force-net.com/2009/10/blog-post.html
  10. Калькулятор разрешений различных мониторов:http://axofiber.org.ru/inside/pixel.size.htm
  11. Проблемы десктопных браузеров:http://www.beskrovnyy.com/verstka/skaz-o-dvux-vyuportax-chast-pervaya/
  12. Проблемы мобильных браузеров:http://www.beskrovnyy.com/verstka/skaz-o-dvux-vyuportax-chast-vtoraya/

Приложение 1. Правила округления при приближённых вычислениях

При измерениях и последующих вычислениях с помощью компьютера мы имеем дело, в основном, с приближёнными числами. При этом верными (значащими) цифрами являются лишь те, которые соответствуют точности измерений. Например, при измерении длины раковины моллюска штангенциркулем, точность измерений составляет 0.1 мм. Поэтому, если результат измерений записан в виде 33.45, то значащими будут только первые три цифры, то есть, следует записать либо 33.4, либо 33.5.

При вычислениях оставляют такое количество значащих цифр, которое обеспечивает требуемую точность результатов и не загружает вычисления ненужными и неверными цифрами. При этом, следует соблюдать следующие правила.