Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Нарисовать график y=cos(x)

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
lawer85
Отправлено: 01 Марта, 2013 - 01:33:50
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




Вобщем нужно построить график именно в виде рисунка y=cos(x) причем Х должен меняться от 0 до 3PI.


Пытаюсь это сделать, но сам понимаю что выходит чушь полная у меня.

Каков должен быть код чтоб выполнить это задание?
 
 Top
imya
Отправлено: 01 Марта, 2013 - 08:33:58
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)






-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
lawer85
Отправлено: 01 Марта, 2013 - 13:06:36
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




Мне нужно именно на PHP это сделать без java и без БД
 
 Top
DlTA
Отправлено: 01 Марта, 2013 - 13:39:07
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




тут все графические функции
особое внимание обратить на рисование линии потому что именно ею лучше делать прорисовку, во избежании разрывов в графике

ну а формулу вы знаете
так же надо учеть что в пыхе углы изменяются в радианах, а не в градусах
 
 Top
lawer85
Отправлено: 01 Марта, 2013 - 13:45:09
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




Вопрос в том, что все это я знаю. НО сам код не получается написать при условии Х должен меняться от 0 до 3PI.
 
 Top
DeepVarvar Супермодератор
Отправлено: 01 Марта, 2013 - 13:50:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




PHP:
скопировать код в буфер обмена
  1. for ($x = 0; $x < (3*3.14); $x += 0.01) {
  2.   // код который ты знаешь
  3. }
 
 Top
lawer85
Отправлено: 01 Марта, 2013 - 13:55:34
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




DeepVarvar пишет:
PHP:
скопировать код в буфер обмена
  1. for ($x = 0; $x < (3*3.14); $x += 0.01) {
  2.   // код который ты знаешь
  3. }


Спасибо. Попробую дальше сам.
 
 Top
LIME
Отправлено: 01 Марта, 2013 - 14:38:26
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




 
 Top
DlTA
Отправлено: 01 Марта, 2013 - 15:06:01
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




DeepVarvar пишет:
for ($x = 0; $x < (3*3.14); $x += 0.01) {

не то

у вас шаг должен быть в 1 пиксел, и вопрос в том чему это растояние соответствует

короче говоря нужно определиться с масштабом и т.д.
 
 Top
lawer85
Отправлено: 01 Марта, 2013 - 21:47:35
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




Вот на что меня хватает

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $im = imagecreatetruecolor(800, 800);
  3. $c = imagecolorallocate($im, 120, 220, 150);
  4. imageline($im, 0, 0, imagesx($im), imagesy($im), $c);
  5. for ($x = 0; $x < (3*3.14); $x += 0.01) {
  6. $y = cos($x);
  7. $i = imagecreatetruecolor($x, $y);
  8. imageline($im, imagesx($i), imagesy($i), imagesx($i), imagesy($i), $c);
  9. }
  10. header("Content-type: image/png");
  11. imagepng($im);
  12.  
  13. ?>
  14.  


Я же говорю выходит чушь полная. Не могу понять как именно надо сделать.
 
 Top
OrmaJever Модератор
Отправлено: 01 Марта, 2013 - 22:34:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Значит первое, как уже сказал DlTA шаг может быть только 1px.
второе, насколько я помню математику cos и sin не может быть больше 1, здесь вспоминаем правило первое, но можно добавить множитель.
PHP:
скопировать код в буфер обмена
  1. $mx = 10;
  2. $mc = 1;
  3. $im = imagecreatetruecolor(800, 800);
  4. $c = imagecolorallocate($im, 120, 220, 150);
  5. imageline($im, 0, 400, 800, 400, $c);
  6. imageline($im, 400, 0, 400, 800, $c);
  7.  
  8. for ($x=400+round(-3*3.14)*$mx; $x<=400+round(3*3.14)*$mx;) {
  9.         $i = imagecolorallocate($im, 255, 255, 255);
  10.         imageline($im, $x, round(400+cos($x)*$mx), $x+=$mc, round(400+cos($x)*$mx), $i);
  11. }
  12.  
  13. header("Content-type: image/png");
  14. imagepng($im);

$mx тот самый множитель для $y что бы значение хоть как-то изменялось, а вот $mc... этот множитель я добавил что бы немного растянуть график по горизонтали, но получил интересный эфект! Попробуйте добавлять по одной еденице к mc, и увидите интересные эффекты ;)


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
DeepVarvar Супермодератор
Отправлено: 01 Марта, 2013 - 22:46:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




DlTA пишет:
не то

у вас шаг должен быть в 1 пиксел
Правильно, я написал лишь принцип.
OrmaJever пишет:
насколько я помню математику cos и sin не может быть больше 1

1 - sin = cos и наоборот, 1 - tg = ctg и наоборот.
Это четыре четверти еденичной окружности, т.е. окружности, радиус которой равет еденице.
Тогда ничего не стоит расчитать zoom под себя, это же простые пропорции.
Человек же говорит что с этим то у него все нормально.
И как выясняется - не нормально.
(Добавление)
LIME пишет:
http://www.php.net/manual/ru/function.pi.php
Ну, я во всяком случае попытался заставить его думать самостоятельно.
 
 Top
lawer85
Отправлено: 01 Марта, 2013 - 22:50:20
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




OrmaJever пишет:
Значит первое, как уже сказал DlTA шаг может быть только 1px.
второе, насколько я помню математику cos и sin не может быть больше 1, здесь вспоминаем правило первое, но можно добавить множитель.
PHP:
скопировать код в буфер обмена
  1. $mx = 10;
  2. $mc = 1;
  3. $im = imagecreatetruecolor(800, 800);
  4. $c = imagecolorallocate($im, 120, 220, 150);
  5. imageline($im, 0, 400, 800, 400, $c);
  6. imageline($im, 400, 0, 400, 800, $c);
  7.  
  8. for ($x=400+round(-3*3.14)*$mx; $x<=400+round(3*3.14)*$mx;) {
  9.         $i = imagecolorallocate($im, 255, 255, 255);
  10.         imageline($im, $x, round(400+cos($x)*$mx), $x+=$mc, round(400+cos($x)*$mx), $i);
  11. }
  12.  
  13. header("Content-type: image/png");
  14. imagepng($im);

$mx тот самый множитель для $y что бы значение хоть как-то изменялось, а вот $mc... этот множитель я добавил что бы немного растянуть график по горизонтали, но получил интересный эфект! Попробуйте добавлять по одной еденице к mc, и увидите интересные эффекты ;)


Спасибо большое.
(Добавление)
DeepVarvar пишет:
DlTA пишет:
не то

у вас шаг должен быть в 1 пиксел
Правильно, я написал лишь принцип.
OrmaJever пишет:
насколько я помню математику cos и sin не может быть больше 1

1 - sin = cos и наоборот, 1 - tg = ctg и наоборот.
Это четыре четверти еденичной окружности, т.е. окружности, радиус которой равет еденице.
Тогда ничего не стоит расчитать zoom под себя, это же простые пропорции.
Человек же говорит что с этим то у него все нормально.
И как выясняется - не нормально.
(Добавление)
LIME пишет:
http://www.php.net/manual/ru/function.pi.php
Ну, я во всяком случае попытался заставить его думать самостоятельно.


Просто мне уже 27 лет, а школу я закончил ну скажем так давно, хоть тогда я и отлично понимал алгебру.

(Отредактировано автором: 01 Марта, 2013 - 22:52:08)

 
 Top
DeepVarvar Супермодератор
Отправлено: 01 Марта, 2013 - 23:53:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




lawer85 пишет:
Просто мне уже 27 лет, а школу я закончил ну скажем так давно, хоть тогда я и отлично понимал алгебру.
Не простительно.
Мне 30 и у меня только 9 кл. вечерней школы.
Синусы-косинусы мне вообще учить не довелось, т.к. это 10-11 кл.
Не посчитайте что хвалюсь.
Посчитайте за пинок в правильную сторону - как минимум вспомнить старое, как максимум познать новое.
И не надо искать себе оправданий - они только тормозят работу над собой.
OrmaJever тоже не имеет какого либо профильного образования, насколько я знаю.
 
 Top
OrmaJever Модератор
Отправлено: 01 Марта, 2013 - 23:59:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




DeepVarvar пишет:
OrmaJever тоже не имеет какого либо профильного образования, насколько я знаю.

Да, и иногда ломаю голову из-за математики. Хотя с изображениями очень даже нравится работать Подмигивание


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB