Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Новости ИТ Программы Книги Games   Обои   Экспорт RSS E-Books
 
Поиск по сайту

TOP-10 программ
Symantec Norton Ghost 9.0
Partition Magic 8.0.2 Pro
Xilisoft 3GP Video Converter v3.1.7.0616b
Norton AntiVirus 2005
Xilisoft 3GP Video Converter v2.1.52.831b
Антивирус Касперского Personal 5.0.303 beta 2
RAR Password Cracker 4.12
ABBYY PDF Transformer v1.00.820
MP3 To Ringtone Gold v3.02
Mobtime Cell Phone Manager v5.3.1
 
Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
 
 

   Интернет технологии -> PHP -> Работа с полигонами


Работа с полигонами

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

Для рисования полигона используется функция imagepolygon.

int imagepolygon ( resource image, array points, int num_points, int color )

где,

  • image - идентификатор изображения;
  • points - массив точек;
  • num_points - количество точек в полигоне;
  • color - цвет.

Массив точек содержит X и Y координату каждой точки. Таким образом, для трех точек, массив содержит шесть элементов: Array( X1, Y1, X2, Y2, X3, Y3)

Пример 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);
?>

Результат работы этой программы выглядит следующим образом:

Полигоны очень удобно использовать при работе с векторной графикой. Я использовал полигоны для отрисовки карты мира на сайте http://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, а потом и до 1024x768:

Все примеры к этому уроку можно скачать здесь.

Автор: mike
Источник: www.codenet.ru

Ссылки по теме
Разработка собственных листов рассылки
Безопасность PHP+MYSQL+Apache
Чтение почты через Web-интерфейс
Полезные скрипты на PHP
PHP и формы
Почтовые функции в РНР
Отправка электронной почты с помощью PHP
 

Компьютерная документация от А до Я - Главная

 
Популярные книги

Photoshop CS2. Настоящий самоучитель

Подробнее

Общая информатика. Универсальный курс

Подробнее

Технология программирования на C++. Начальный курс

Подробнее

 

 
Новости ИТ
21.11.2008  Thunderbird 2.0.0.18
21.11.2008  Miranda IM 0.7.13
21.11.2008  Dr. Web 5 Beta
21.11.2008  KAV/KIS 2009 8.0.0.506
21.11.2008  avast! 4.8 (1290)
21.11.2008  Radmin 3.3
21.11.2008  DVR-X162J - новый внешний DVD-привод от Pioneer
21.11.2008  Дизайнерские системные блоки от Smooth Creations
21.11.2008  SPARKLE представляет Calibre P980X+, видеокарту с необычным дизайном
21.11.2008  Titan представляет куллер для Intel i7
21.11.2008  Компактный ПК для дома Acer Aspire X3200 - в России
21.11.2008  Hitachi Data Systems объявляет о новом плане инвестиций в России и странах СНГ
21.11.2008  Назначен новый президент Microsoft в России
21.11.2008  Mustek: новые цифровые видеокамеры начального уровня
21.11.2008  Серверные Core i7 - быстры ли они? Да, и очень, судя по тестам в SPECfp
21.11.2008  NETGEAR: акция для партнеров
21.11.2008  Персональные фотокарты на Яндексе
21.11.2008  Программа для стартапов Microsoft BizSpark анонсирована в России
21.11.2008  Средства защиты от утечек конфиденциальных данных Symantec DLP 8.1 теперь и в России
21.11.2008  Axis: первый 6-канальный IP-видеосервер с поддержкой H.264/M-JPEG
 
Полезно

 
Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.
 
Rambler's Top100