|
|
|
| Нужно построить график по оси х и оси у с точками (x, y).
как это можно организовать? | |
|
|
|
|
|
|
|
для: dima_s_d_s
(28.10.2006 в 18:10)
| | Кто знает? | |
|
|
|
|
|
|
|
для: dima_s_d_s
(28.10.2006 в 20:21)
| | Необходимо иметь: библиотека GDLIB
решение: нарисовать с помощю GDLib, вывести
http://www.softtime.ru/group/id_group=15 | |
|
|
|
|
|
|
|
для: ЯR
(28.10.2006 в 20:28)
| | Я не умею. Может кто поможет! ? | |
|
|
|
|
|
|
|
для: ЯR
(28.10.2006 в 20:28)
| | Мне нужны оси координат x и y.
И там уже построить график. | |
|
|
|
|
|
|
|
для: dima_s_d_s
(28.10.2006 в 21:21)
| | Лана ща сам в книжечку загляну и перескажу | |
|
|
|
|
|
|
|
для: ЯR
(28.10.2006 в 21:23)
| | ок! | |
|
|
|
|
|
|
|
для: dima_s_d_s
(28.10.2006 в 21:42)
| | почти сделал, ща выложу | |
|
|
|
|
|
|
|
для: ЯR
(28.10.2006 в 21:58)
| | ок! | |
|
|
|
|
|
|
|
для: dima_s_d_s
(28.10.2006 в 18:10)
| | опробуй (тока должна быть включена GDLib):
<?php
// пример draw_graph(1000, 500, 10, array(0, 0, 5, 5, 5, 0, 5, -5, 50, 30));
// $w -- ширина графика
// $h -- высота графика
// $s -- кол-во пикселей в одном делении
// $pts -- массив с точками в формате array(x1, y1, x2, y2, x3, x3, ...)
function draw_graph($w, $h, $s, $pts){
$image = imagecreate($w, $h);
imageantialias($image, true);
$color_body = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
$color_line = imagecolorallocate($image, 0x00, 0x00, 0x00);
imagefilledrectangle($image, 0, 0, $w, $h, $color_body);
imageline($image, $w/2, 0, $w/2, $h, $color_line);
imageline($image, 0, $h/2, $w, $h/2, $color_line);
$x0 = $w/2;
$y0 = $h/2;
for ($i = 0; $i <= $x0; $i+=$s){
$x = $i + $x0;
$x2 = -$i + $x0;
imageline($image, $x, $y0-$s/2, $x, $y0+$s/2, $color_line);
imageline($image, $x2, $y0-$s/2, $x2, $y0+$s/2, $color_line);
}
for ($i = 0; $i <= $y0; $i+=$s){
$y = -$i + $y0;
$y2 = $i + $y0;
imageline($image, $x0-$s/2, $y, $x0+$s/2, $y, $color_line);
imageline($image, $x0-$s/2, $y2, $x0+$s/2, $y2, $color_line);
}
$x_last = $pts[0];
$y_last = $pts[1];
for ($i=1; $i <= count($pts); $i+=2){
$x = $pts[$i-1]*$s + $x0;
$y = -$pts[$i]*$s + $y0;
imageline($image, $x_last, $y_last, $x, $y, $color_line);
$x_last = $x;
$y_last = $y;
}
header("Content-type: image/gif");
imagegif($image);
}
?>
|
так пойдёт, или что-нибудь ещё? | |
|
|
|
|
|
|
|
для: ЯR
(28.10.2006 в 22:15)
| | посмотрю | |
|
|
|
|
|
|
|
для: dima_s_d_s
(28.10.2006 в 22:18)
| | Если не трудно опишите как код использовать а то у меня не выходит! | |
|
|
|
|
|
|
|
для: dima_s_d_s
(28.10.2006 в 18:10)
| | Эта тема уже обсуждалась. Воспользуйтесь поиском. | |
|
|
|
|
|
|
|
для: dima_s_d_s
(28.10.2006 в 18:10)
| | Например так (я его немного переделал):
<?php
draw_graph(1000, 500, 10, array(0, 0, 5, 5, 5, 0, 5, -5, 50, 30));
// $w -- ширина графика
// $h -- высота графика
// $s -- кол-во пикселей в одном делении
// $pts -- массив с точками в формате array(x1, y1, x2, y2, x3, x3, ...)
function draw_graph($w, $h, $s, $pts){
$image = imagecreate($w, $h);
imageantialias($image, true);
$color_body = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
$color_line = imagecolorallocate($image, 0x00, 0x00, 0x00);
imagefilledrectangle($image, 0, 0, $w, $h, $color_body);
imageline($image, $w/2, 0, $w/2, $h, $color_line);
imageline($image, 0, $h/2, $w, $h/2, $color_line);
imageline($image, ($w-$s)/2, $s/2, $w/2, 0, $color_line);
imageline($image, $w/2, 0, ($w+$s)/2, $s/2, $color_line);
imageline($image, $w-$s/2, ($h-$s)/2, $w, $h/2, $color_line);
imageline($image, $w-$s/2, ($h+$s)/2, $w, $h/2, $color_line);
$font = $s*5;
$label_height = imagefontheight($font);
$label_width = imagefontwidth($font);
imagestring($image, $font, ($w+$s)/2+3, 2, 'y', $color_line);
imagestring($image, $font, $w-3-$label_width, ($h+$s)/2+2, 'x', $color_line);
$x0 = $w/2;
$y0 = $h/2;
for ($i = 0; $i < $x0; $i+=$s){
$x = $i + $x0;
$x2 = -$i + $x0;
imageline($image, $x, $y0-$s/2, $x, $y0+$s/2, $color_line);
imageline($image, $x2, $y0-$s/2, $x2, $y0+$s/2, $color_line);
}
for ($i = 0; $i < $y0; $i+=$s){
$y = -$i + $y0;
$y2 = $i + $y0;
imageline($image, $x0-$s/2, $y, $x0+$s/2, $y, $color_line);
imageline($image, $x0-$s/2, $y2, $x0+$s/2, $y2, $color_line);
}
$x_last = $pts[0];
$y_last = $pts[1];
for ($i=1; $i <= count($pts); $i+=2){
$x = $pts[$i-1]*$s + $x0;
$y = -$pts[$i]*$s + $y0;
imageline($image, $x_last, $y_last, $x, $y, $color_line);
$x_last = $x;
$y_last = $y;
}
header("Content-type: image/gif");
imagegif($image);
}
?>
|
| |
|
|
|
|
|
|
|
для: ЯR
(28.10.2006 в 22:36)
| | Круто! Пойдет!
А подписи можно делать? | |
|
|
|
|
|
|
|
для: dima_s_d_s
(28.10.2006 в 22:38)
| | Подписи к чему? | |
|
|
|
|
|
|
|
для: ЯR
(28.10.2006 в 22:41)
| | Точкам!
Я так понимаю можно!
Ща попробую! | |
|
|
|
|
|
|
|
для: ЯR
(28.10.2006 в 22:41)
| | Смотри а как я могу например функциее y=sin(x); записать данные в Масив!?
Немного детский вопрос! | |
|
|
|
|
|
|
|
для: dima_s_d_s
(28.10.2006 в 22:49)
| | Это мне надо array $d;
а пото в цикле! $d=[x][y];? незнаю как, я знаю как в C++! А PHP недавно начал учить!
Правильно ? | |
|
|
|
|
|
|
|
для: dima_s_d_s
(28.10.2006 в 22:52)
| | Примерно так:
$pts = array();
for($i=-180; $i <= 180; $i++){
$pts[] = deg2rad($i);
$pts[] = sin(deg2rad($i));
}
|
| |
|
|
|
|
|
|
|
для: ЯR
(28.10.2006 в 23:02)
| | А подписи у меня не вышло сделать | |
|
|
|
|
 2.1 Кб |
|
|
для: dima_s_d_s
(28.10.2006 в 23:06)
| | Какие подписи?
ЗЫ
в аттаче -- немного обновлённая функция | |
|
|
|
|
|
|
|
для: ЯR
(28.10.2006 в 23:09)
| | Подписи делений! | |
|
|
|
|
|
|
|
для: ЯR
(28.10.2006 в 23:09)
| | А можно перевести "курсор" точку откуда будет рисовать в начало рисунка ? А то рисует с верхнего левого угла! | |
|
|
|
|
|
|
|
для: dima_s_d_s
(28.10.2006 в 23:22)
| | в аттаче исправлено, подписи ща сделаю | |
|
|
|
|
|
|
|
для: ЯR
(28.10.2006 в 23:30)
| | ок | |
|
|
|
|
|
|
|
для: dima_s_d_s
(28.10.2006 в 23:32)
| | так правильно?
$pts[] = $c1*(deg2rad ($i)* deg2rad($i)/2)+$c2; | |
|
|
|
|
|
|
|
для: dima_s_d_s
(28.10.2006 в 23:45)
| | а это что? я же не знаю, что ты делаешь и что значат переменные.
ЗЫ
В аттаче обновлённый скрипт | |
|
|
|
|
|
|
|
для: ЯR
(29.10.2006 в 00:01)
| | У меня ошибку выдаёт Warning: imagettftext(): Could not find/open font in.... | |
|
|
|
|
|
|
|
для: dima_s_d_s
(29.10.2006 в 00:10)
| | и переменные
типа
C*(x*x/2)*u=y | |
|
|
|
|
|
|
|
для: dima_s_d_s
(29.10.2006 в 00:14)
| |
for($i=1; $i<=180; $i++){
$pts[] = $i;
$pts[] = $c1*(deg2rad ($i)* deg2rad($i)/2)+$c2;
}
|
| |
|
|
|
|
|
|
|
для: dima_s_d_s
(29.10.2006 в 00:10)
| | попробуй заменить (в скрипте) tahoma.ttf на arial.ttf или verdana.ttf (или times.ttf и т.д.) | |
|
|
|
|
|
|
|
для: ЯR
(29.10.2006 в 00:24)
| | Ошибка осталась! | |
|
|
|
|
|
|
|
для: dima_s_d_s
(29.10.2006 в 00:29)
| | скопируй это в папку со скриптом и переименуй в tahoma.ttf | |
|
|
|
|
 2.6 Кб |
|
|
для: ЯR
(29.10.2006 в 09:44)
| | и вот ещё в скрипте исправил ошибку ------>---^ | |
|
|
|
|
|
|
|
для: ЯR
(29.10.2006 в 00:01)
| | По пробую | |
|
|
|
|
|
|
|
для: dima_s_d_s
(29.10.2006 в 00:24)
| | я пошёл, если будут вопросы ко мне, то только завтра | |
|
|
|
|
|
|
|
для: ЯR
(29.10.2006 в 00:28)
| | Ок !
сенкс! | |
|
|
|
|
 4.9 Кб |
|
|
для: dima_s_d_s
(29.10.2006 в 00:30)
| | И вот окончательный скрипт:
(в аттаче) | |
|
|
|
|
|
|
|
для: ЯR
(29.10.2006 в 11:42)
| | Супер график. Я в ауте :-)
Супер. Молодец.
Спасибо.
А какой ты литературой пользуешься?
И какую литературу можешь посоветовать для изучения регулярных выражений? | |
|
|
|
|
|
|
|
для: dima_s_d_s
(29.10.2006 в 13:01)
| | > А какой ты литературой пользуешься?
По PHP я пользуюсь всеми книгами авторов этого сайта, так же "PHP 5. Полное руководство", "PHP 5. Библиотека профессионала", "PHP глазами хакера" + ещё несколько книг и Manual.
> И какую литературу можешь посоветовать для изучения регулярных выражений?
Ну, я ни одной книги по рег. выражениям не читал, так что не могу что-либо порекомендовать.
Спроси в разделе форума по рег. выр. или тут немного есть | |
|
|
|
|
 4.8 Кб |
|
|
для: ЯR
(29.10.2006 в 13:22)
| | И вот я ещё немного оптимизировал скрипт, должно быстрее работать | |
|
|
|