В последнее время для морфометрических измерений в гидробиологии всё чаще используются возможности компьютерной 2D-графики. Особый интерес в этой связи представляют возможности веб-технологий (web) для использования в так называемых "облачных" вычислениях.
Рассматриваемый пример использования web посвящён проверке возможности расчёта площади эллипса по его растровому изображению, помещённому в элемент HTML5 Canvas [1,2]. Площадь в данном примере рассчитывается в пикселах. Для расчётов используется программы (скрипты), написанные на языке Javascript, с использованием свойств и методов программного интерфейса (API) HTML5 Canvas.
Зачем рассматривается этот пример? Во-первых, из-за необходимости исследовать зависимость точности определения площади от типа монитора. Изображение, представляемое средствами HTML5 Canvas, является растровым изображением (не векторным). Элементарная неделимая точка растра - пиксел. Пиксел - это квадрат, длина стороны которого зависит от разрешения экрана используемого монитора (дисплея).
Во-вторых, элемент HTML5 Canvas отображается не совсем одинаково в разных браузерах.
HTML5 Canvas стал поддерживаться браузерами относительно недавно и, несмотря на бум посвящённых ему публикаций, примеров его применения в различных предметных областях ещё недостаточно. В то же время привлекает доступность и лёгкость использования свойств и методов этого элемента по сравнению с другими, более "тяжёлыми" технологиями (например, WebGL [4,5]).
Данный пример позволяет выполнить эксперименты по определению точности расчёта площади фигур разных размеров, помещаемых в HTML5 Canvas, с использованием различных браузеров и мониторов.
На эллипс похожи формы раковин некоторых двустворчатых моллюсков, поэтому эксперименты с этим примером являются одним из этапов исследования возможности морфометрических web-измерений раковин двустворчатых моллюсков по их цифровым изображениям.
Задача состоит в построении тестовой геометрической фигуры средствами API HTML5 Canvas с использованием языка Javascript и в приближённом вычислении площади этой фигуры по её растровому представлению (площади растровой фигуры). В качестве такой фигуры взят эллипс. Точную величину площади эллипса можно определить по аналитической формуле (площади геометрической фигуры).
Отношение приближённой и точной площадей позволяет вычислить относительную ошибку определения площади по растровому изображению.
Canvas (русс. - холст) встраивается в HTML-документ с помощью тэга <canvas>...</canvas>
К этому тэгу, как и к другим тэгам, можно обращаться из скриптов, как к объекту доменной модели или по имени. Все свойства и методы API содержатся в так называемых контекстах - объектах, посвящённых какому-то типу графики. Мы будем использовать контекст для работы с 2D-изображениями. Этого достаточно, хотя эти и другие, более развитые методы, имеются в контексте для работы с 3D.
Итак, встраиваем элемент Canvas в HTML-документ и получаем его в скрипте, как объект. Затем получаем 2D-контекст для этого объекта:Координаты холста отсчитываются от точки x=0, y=0, находящейся в левом верхнем углу (начало координат или начало отсчёта). Координаты увеличиваются в горизонтальном направлении вправо и в вертикальном - вниз. Каждая координата обозначает местонахождение соответствующего пиксела.
Обо всех свойствах и методах API HTML5 Canvas и примерах их применения можно узнать в многочисленных источниках, например, здесь [1,2,3]. Ниже кратко рассмотриваются лишь свойства и методы API HTML5 Canvas, используемые в наастоящем примере.
Для построения эллипса используется метод преобразования окружности, который должен быть известен вам из школьной геометрии.
Площадь эллипса, как геометрической фигуры, вычисляется по известной формуле и не требует пояснений. Вот код функции, реализующей получение геометрической площади.
По помещённому ниже коду функции, реализующей определение площади эллипса, представленном в растровом виде, также не трудно понять, как это делается.