![]() |
|
Главная Скачать (Download) Dreamweaver CS4 Dreamweaver 8 Dreamweaver MX 2004 - Рабочая область
Dreamweaver 4- Создание/ открытие документов - Настройка сайта - Компоновка страниц с CSS - Табличный контент - Шаблоны в MX 2004 - Работа с страницами - Настройка серверных приложений - Рабочая область для динамических страниц Уроки (Tutorials) Видеоуроки new!!! Fireworks ЧаВо Документация Статьи Программы и скрипты Бесплатные шаблоны Каталог сайтов Форум Карта сайта Контакты розовые букеты |
Работа с полигонами Полигон - это абстрактная геометрическая фигура, на которой основывается вся трехмерная компьютерная графика. С греческого языка слово "полигон" переводится как многоугольник. Для рисования полигона используется функция
int imagepolygon ( resource image, array points,
int num_points, int color )
где,
Массив точек содержит X и Y координату каждой точки. Таким
образом, для трех точек, массив содержит шесть элементов:
Пример 25. Вывод самого простого полигона (треугольник): <?php
header ("Content-type: image/png");
$im = imagecreatetruecolor(320, 240);
$ink = imagecolorallocate($im, 255, 255, 255);
imagepolygon($im, Array(
100,100,
120,180,
210,160,
), 3, $ink);
imagepng($im);
imagedestroy($im);
?>
Результат работы этой программы выглядит следующим образом:
Полигоны очень удобно использовать при работе с векторной графикой. Я использовал полигоны для отрисовки карты мира на сайте top.novgorod.ru. Файлы с контурами стран я создавал в Adobe Photoshop с помощью "Paths" и экспортировал их встроенным плагином "Export Paths to Illustrator". Ниже приведен пример программы, работающей подобным образом. В примере, вместо карты, используется силуэт Софийского Собора в Великом Новгороде. Пример 26. Чтение файла Adobe Illustrator и вывод полигона: <?php
// Ширина и высота изображения
$W=320;
$H=240;
// Чтения файла
$d=file("Sophia_Novgorod.ai");
// Если массив $d содержит только один элемент,
// то в качестве переноса строк используется символ
// возврата каретки, и нам необходимо разбить текст
// на строку вручную
if (count($d)==1) $d=explode("\r",$d[0]);
// С помощью регулярного выражение выберем координаты
// всех точек
$points=Array();
for ($i=0;$i<count($d);$i++)
if (eregi("([0-9.]+) ([0-9.]+) [lm]",$d[$i],$r)) {
$points[]=$r[1];
$points[]=$r[2];
}
// Найдем точки с самыми большими координатами.
// Эти значения нам понадобятся для нормализации.
$maxw=$maxh=0;
for ($i=0;$i<count($points);$i+=2) {
if ($maxw<$points[$i]) $maxw=$points[$i];
if ($maxh<$points[$i+1]) $maxh=$points[$i+1];
}
// Нормализуем значения координат.
for ($i=0;$i<count($points);$i+=2) {
$points[$i]/=$maxw;
$points[$i+1]/=$maxh;
}
for ($i=0;$i<count($points);$i+=2) {
// Отмасштабируем изображение
$points[$i]*=($W-20);
$points[$i+1]*=($H-20);
// Сдвинем изображение
$points[$i]+=10;
$points[$i+1]=$H-$points[$i+1]-10;
}
// Создадим изображение и выделим цвета
header ("Content-type: image/png");
$im = imagecreatetruecolor($W, $H);
$ink = imagecolorallocate($im, 255, 255, 255);
// Вывод полигона
imagepolygon($im, $points, count($points)/2, $ink);
imagepng($im);
imagedestroy($im);
?>
Результат работы этой программы выглядит следующим образом:
Воспользуемся главным достоинством векторного изображения — увеличим его до 500x375, а потом и до :
Все примеры к этому уроку можно скачать . Автор: mike
|
салон фотоэпиляции |