Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Нужно построить график по точкам (x, y)
 
 автор: dima_s_d_s   (28.10.2006 в 18:10)   письмо автору
 
 

Нужно построить график по оси х и оси у с точками (x, y).
как это можно организовать?

   
 
 автор: dima_s_d_s   (28.10.2006 в 20:21)   письмо автору
 
   для: dima_s_d_s   (28.10.2006 в 18:10)
 

Кто знает?

   
 
 автор: ЯR   (28.10.2006 в 20:28)   письмо автору
 
   для: dima_s_d_s   (28.10.2006 в 20:21)
 

Необходимо иметь: библиотека GDLIB
решение: нарисовать с помощю GDLib, вывести

http://www.softtime.ru/group/id_group=15

   
 
 автор: dima_s_d_s   (28.10.2006 в 20:36)   письмо автору
 
   для: ЯR   (28.10.2006 в 20:28)
 

Я не умею. Может кто поможет! ?

   
 
 автор: dima_s_d_s   (28.10.2006 в 21:21)   письмо автору
 
   для: ЯR   (28.10.2006 в 20:28)
 

Мне нужны оси координат x и y.
И там уже построить график.

   
 
 автор: ЯR   (28.10.2006 в 21:23)   письмо автору
 
   для: dima_s_d_s   (28.10.2006 в 21:21)
 

Лана ща сам в книжечку загляну и перескажу

   
 
 автор: dima_s_d_s   (28.10.2006 в 21:42)   письмо автору
 
   для: ЯR   (28.10.2006 в 21:23)
 

ок!

   
 
 автор: ЯR   (28.10.2006 в 21:58)   письмо автору
 
   для: dima_s_d_s   (28.10.2006 в 21:42)
 

почти сделал, ща выложу

   
 
 автор: dima_s_d_s   (28.10.2006 в 21:59)   письмо автору
 
   для: ЯR   (28.10.2006 в 21:58)
 

ок!

   
 
 автор: ЯR   (28.10.2006 в 22:15)   письмо автору
 
   для: 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($imagetrue);
    
$color_body imagecolorallocate($image0xFF0xFF0xFF);
    
$color_line imagecolorallocate($image0x000x000x00);
    
imagefilledrectangle($image00$w$h$color_body);
    
imageline($image$w/20$w/2$h$color_line);
    
imageline($image0$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);
}

?>

так пойдёт, или что-нибудь ещё?

   
 
 автор: dima_s_d_s   (28.10.2006 в 22:18)   письмо автору
 
   для: ЯR   (28.10.2006 в 22:15)
 

посмотрю

   
 
 автор: dima_s_d_s   (28.10.2006 в 22:28)   письмо автору
 
   для: dima_s_d_s   (28.10.2006 в 22:18)
 

Если не трудно опишите как код использовать а то у меня не выходит!

   
 
 автор: Саня   (28.10.2006 в 22:32)   письмо автору
 
   для: dima_s_d_s   (28.10.2006 в 18:10)
 

Эта тема уже обсуждалась. Воспользуйтесь поиском.

   
 
 автор: ЯR   (28.10.2006 в 22:36)   письмо автору
 
   для: dima_s_d_s   (28.10.2006 в 18:10)
 

Например так (я его немного переделал):
<?php
draw_graph
(100050010, array(0055505, -55030));

// $w -- ширина графика
// $h -- высота графика
// $s -- кол-во пикселей в одном делении
// $pts -- массив с точками в формате array(x1, y1, x2, y2, x3, x3, ...)
function draw_graph($w$h$s$pts){
    
$image imagecreate($w$h);
    
imageantialias($imagetrue);
    
$color_body imagecolorallocate($image0xFF0xFF0xFF);
    
$color_line imagecolorallocate($image0x000x000x00);
    
imagefilledrectangle($image00$w$h$color_body);
    
imageline($image$w/20$w/2$h$color_line);
    
imageline($image0$h/2$w$h/2$color_line);
    
imageline($image, ($w-$s)/2$s/2$w/20$color_line);
    
imageline($image$w/20, ($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+32'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);
}

?>

   
 
 автор: dima_s_d_s   (28.10.2006 в 22:38)   письмо автору
 
   для: ЯR   (28.10.2006 в 22:36)
 

Круто! Пойдет!
А подписи можно делать?

   
 
 автор: ЯR   (28.10.2006 в 22:41)   письмо автору
 
   для: dima_s_d_s   (28.10.2006 в 22:38)
 

Подписи к чему?

   
 
 автор: dima_s_d_s   (28.10.2006 в 22:44)   письмо автору
 
   для: ЯR   (28.10.2006 в 22:41)
 

Точкам!
Я так понимаю можно!
Ща попробую!

   
 
 автор: dima_s_d_s   (28.10.2006 в 22:49)   письмо автору
 
   для: ЯR   (28.10.2006 в 22:41)
 

Смотри а как я могу например функциее y=sin(x); записать данные в Масив!?
Немного детский вопрос!

   
 
 автор: dima_s_d_s   (28.10.2006 в 22:52)   письмо автору
 
   для: dima_s_d_s   (28.10.2006 в 22:49)
 

Это мне надо array $d;
а пото в цикле! $d=[x][y];? незнаю как, я знаю как в C++! А PHP недавно начал учить!
Правильно ?

   
 
 автор: ЯR   (28.10.2006 в 23:02)   письмо автору
 
   для: dima_s_d_s   (28.10.2006 в 22:52)
 

Примерно так:

$pts = array();
for($i=-180; $i <= 180; $i++){
  $pts[] = deg2rad($i);
  $pts[] = sin(deg2rad($i));
}

   
 
 автор: dima_s_d_s   (28.10.2006 в 23:06)   письмо автору
 
   для: ЯR   (28.10.2006 в 23:02)
 

А подписи у меня не вышло сделать

   
 
 автор: ЯR   (28.10.2006 в 23:09)   письмо автору
2.1 Кб
 
   для: dima_s_d_s   (28.10.2006 в 23:06)
 

Какие подписи?

ЗЫ
в аттаче -- немного обновлённая функция

   
 
 автор: dima_s_d_s   (28.10.2006 в 23:14)   письмо автору
 
   для: ЯR   (28.10.2006 в 23:09)
 

Подписи делений!

   
 
 автор: dima_s_d_s   (28.10.2006 в 23:22)   письмо автору
 
   для: ЯR   (28.10.2006 в 23:09)
 

А можно перевести "курсор" точку откуда будет рисовать в начало рисунка ? А то рисует с верхнего левого угла!

   
 
 автор: ЯR   (28.10.2006 в 23:30)   письмо автору
 
   для: dima_s_d_s   (28.10.2006 в 23:22)
 

в аттаче исправлено, подписи ща сделаю

   
 
 автор: dima_s_d_s   (28.10.2006 в 23:32)   письмо автору
 
   для: ЯR   (28.10.2006 в 23:30)
 

ок

   
 
 автор: dima_s_d_s   (28.10.2006 в 23:45)   письмо автору
 
   для: dima_s_d_s   (28.10.2006 в 23:32)
 

так правильно?
$pts[] = $c1*(deg2rad ($i)* deg2rad($i)/2)+$c2;

   
 
 автор: ЯR   (29.10.2006 в 00:01)   письмо автору
 
   для: dima_s_d_s   (28.10.2006 в 23:45)
 

а это что? я же не знаю, что ты делаешь и что значат переменные.

ЗЫ
В аттаче обновлённый скрипт

   
 
 автор: dima_s_d_s   (29.10.2006 в 00:10)   письмо автору
 
   для: ЯR   (29.10.2006 в 00:01)
 

У меня ошибку выдаёт Warning: imagettftext(): Could not find/open font in....

   
 
 автор: dima_s_d_s   (29.10.2006 в 00:14)   письмо автору
 
   для: dima_s_d_s   (29.10.2006 в 00:10)
 

и переменные
типа
C*(x*x/2)*u=y

   
 
 автор: ЯR   (29.10.2006 в 00:27)   письмо автору
 
   для: 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;
}

   
 
 автор: ЯR   (29.10.2006 в 00:24)   письмо автору
 
   для: dima_s_d_s   (29.10.2006 в 00:10)
 

попробуй заменить (в скрипте) tahoma.ttf на arial.ttf или verdana.ttf (или times.ttf и т.д.)

   
 
 автор: dima_s_d_s   (29.10.2006 в 00:29)   письмо автору
 
   для: ЯR   (29.10.2006 в 00:24)
 

Ошибка осталась!

   
 
 автор: ЯR   (29.10.2006 в 09:44)   письмо автору
 
   для: dima_s_d_s   (29.10.2006 в 00:29)
 

скопируй это в папку со скриптом и переименуй в tahoma.ttf

   
 
 автор: ЯR   (29.10.2006 в 10:09)   письмо автору
2.6 Кб
 
   для: ЯR   (29.10.2006 в 09:44)
 

и вот ещё в скрипте исправил ошибку ------>---^

   
 
 автор: dima_s_d_s   (29.10.2006 в 00:24)   письмо автору
 
   для: ЯR   (29.10.2006 в 00:01)
 

По пробую

   
 
 автор: ЯR   (29.10.2006 в 00:28)   письмо автору
 
   для: dima_s_d_s   (29.10.2006 в 00:24)
 

я пошёл, если будут вопросы ко мне, то только завтра

   
 
 автор: dima_s_d_s   (29.10.2006 в 00:30)   письмо автору
 
   для: ЯR   (29.10.2006 в 00:28)
 

Ок !
сенкс!

   
 
 автор: ЯR   (29.10.2006 в 11:42)   письмо автору
4.9 Кб
 
   для: dima_s_d_s   (29.10.2006 в 00:30)
 

И вот окончательный скрипт:

(в аттаче)

   
 
 автор: dima_s_d_s   (29.10.2006 в 13:01)   письмо автору
 
   для: ЯR   (29.10.2006 в 11:42)
 

Супер график. Я в ауте :-)

Супер. Молодец.
Спасибо.


А какой ты литературой пользуешься?
И какую литературу можешь посоветовать для изучения регулярных выражений?

   
 
 автор: ЯR   (29.10.2006 в 13:22)   письмо автору
 
   для: dima_s_d_s   (29.10.2006 в 13:01)
 

> А какой ты литературой пользуешься?
По PHP я пользуюсь всеми книгами авторов этого сайта, так же "PHP 5. Полное руководство", "PHP 5. Библиотека профессионала", "PHP глазами хакера" + ещё несколько книг и Manual.

> И какую литературу можешь посоветовать для изучения регулярных выражений?
Ну, я ни одной книги по рег. выражениям не читал, так что не могу что-либо порекомендовать.
Спроси в разделе форума по рег. выр. или тут немного есть

   
 
 автор: ЯR   (29.10.2006 в 15:21)   письмо автору
4.8 Кб
 
   для: ЯR   (29.10.2006 в 13:22)
 

И вот я ещё немного оптимизировал скрипт, должно быстрее работать

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования