PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (1): [1]
Найдено сообщений: 5
BiDiFo
Отправлено: 16 Августа, 2011 - 16:11:32 • Тема: Построение графика по функции заданной пользователем • Форум: Вопросы новичков
Ответов: 11 Просмотров: 632
Спойлер (Отобразить ) [code=5.php]<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<!-- Шапка с логотипом -->
<td height="35" width="160" bgcolor="#336699" align= "center">
<span class="CL_LOGO">Krit</span>
</td>
<td bgcolor="#336699" valign="middle" align="left">
<div class="CL_HEAD">Высшая Математика Решение задач и примеров - <strong>OnLine</strong></div>
</td>
</tr> <!-- Конец шапки с логотипом -->
<tr> <!-- Строка навигации -->
<td height="5" width="160"></td>
<td valign="middle">
<span class="CL_PROMPT"><a href="index.php" style="color: Black;">./ Главная </a><a href="1.php" style="color: Black;">/Krit, ШАГ-1</a><a href="2.php" style="color: Black;">/ШАГ-2 ></a><a href="3.php" style="color: Black;">/ШАГ-3</a>/ШАГ-4 </span>
</td>
</tr>
<br>
<br>
<form action="4.php" method="post">
Введите формулу для построения графика: <input type=text name="funk" size="40" value="($x/10)*($x/10)"><br>
Введите точность прорисовки графика: <input type=text name="to4" size="15" value="0.01"><br>
Введите минимальное значение: <input type=text name="minval" size="22" value="0"><br>
Введите максимальное значение: <input type=text name="maxval" size="22" value="23"><br>
<input type=submit value="Построить график">
<br>
<br>
<span class="CL_Links"><a href="1.php">на ввод размеров...</a></span><br>
<span class="CL_Links"><a href="index.php">На главную...</a></span></td></tr>
<noindex>
</table>
</body>
</html>[/code]
4.php
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
<?PHP
// настройки
$x0 = 600 ; // абсцисса точки начала отсчёта
$y0 = 350 ; // ордината точки начала отсчёта
$ks = $_POST [ "to4" ] ; // точность рисования графика
$funk = $_POST [ "funk" ] ;
$funk = "exp(-pow(($x -12),2)/(2*16))" ;
$m = 5 ; // масштаб (1|2.5|5)
function grafiki ( $x ) { // функция, график которой рисуем
// $x - значение аргумента функции
// возвращаемое значение - значение функции от данного аргумента
// поддерживаются все математические php-функции
eval ( "\$ funk = \" $funk \" ;" ) ; return $funk ;
}
// начало программы
$m = $m * 10 ;
// создаём изображение
// настраиваем цвета
// фон
// рисуем координатную сетку
for ( $i = 0 ; $i <= $x0 * 2 ; $i ++ ) {
// линии
imageline ( $img , $i * $m , 0
, $i * $m , $y0 * 2
, $lncolor ) ; imageline ( $img , 0
, $i * $m , $x0 * 2
, $i * $m , $lncolor ) ; // чёрточки
imageline ( $img , $i * $m , $y0 * 2
- 152
, $i * $m , $y0 * 2
- 148
, $odcolor ) ; imageline ( $img , 50
- 2
, $i * $m , 50
+ 2
, $i * $m , $odcolor ) ; }
// рисуем циферки
$minval = $_POST [ "minval" ] ;
for ( $i = 0 ; $i <= $x0 ; $i ++ ) {
if ( ( $i - ( $x0 / $m ) != 0
) && ( $i - ( $x0 / $m ) > 0
) ) imagettftext ( $img , 8
, 0
, $i * $m - 550
, $y0 * 2
- 137
, $odcolor , "fonts/tahoma.ttf" , $i - ( $x0 / $m ) + $minval ) ; if ( ( - ( $i - ( $y0 / 35
) ) != 0
) && ( - ( $i - ( $y0 / 35
) ) > 0
) ) imagettftext ( $img , 8
, 0
, 10
, $i * $m + 62
, $odcolor , "fonts/tahoma.ttf" , - ( $i - ( $y0 / 35
) ) / 10
) ; }
// рисуем координатные оси
imageline ( $img , 50
, 10
, 50
, $y0 * 2
, $odcolor ) ; imageline ( $img , 0
, $y0 * 2
- 150
, $x0 * 2
, $y0 * 2
- 150
, $odcolor ) ; // рисуем график функции
for ( $x = 0.001 ; $x < $x0 ; $x += $ks ) {
if (
/* функция, начало */
$y = grafiki( $x )
/* функция, конец */
) {
if ( $x >= 0) $d = 1 ;
else $d = 0 ;
$qx = $x * $m ;
$y = $y * $m ;
imageline ( $img , 50
+ $d + $qx - $minval * $m , 550
- $y * 10
, 50
+ $d + $qx - $minval * $m , 550
- $y * 10
, $grcolor ) ; }
}
header ( "content-type: image/png" ) ; // завершаем программу
?>
BiDiFo
Отправлено: 16 Августа, 2011 - 15:40:59 • Тема: Построение графика по функции заданной пользователем • Форум: Вопросы новичков
Ответов: 11 Просмотров: 632
пытаюсь воткнуть eval(); как то не получается ...
Действия - все поддерживаемые пхп (например такое - exp(-pow(($x-12),2)/(2*16)) )
Параметр да, только один.
Используемые средства не ограничен.
Так, а не может ли быть где - то сдесь ошибки ?
PHP:
скопировать код в буфер обмена
//вот тут мы вводим формулу
< form action= "4.php" method= "post" >
Введите формулу для построения графика: < input type= text name= "funk" size= "40" value= "($x /10)*($x /10)" >< br>
//вот тут ее получаем в фале 4.php
$funk = $_POST [ "funk" ] ;
//тут пытаемся использовать
function grafiki ( $x ) {
eval ( "\$ funk = \" $funk \" ;" ) ; return $funk ;
}
Так, на сколько я понял eval() возвращает строку с подстановкой, а мне нужно выражение ...
имеет вывод
sin(-pow(($x-12),2)/(2*16))
sin(-pow((11-12),2)/(2*16))
1
$str+1 !=1; похоже eval() не подойдет (
BiDiFo
Отправлено: 16 Августа, 2011 - 15:24:57 • Тема: Построение графика по функции заданной пользователем • Форум: Вопросы новичков
Ответов: 11 Просмотров: 632
fredrsf
извиняюсь, наверно, не понятно объяснил, что мне нужно...
function grafiki ($x) {
return ($x/10)*($x/10); //мне нужно что бы эта функция была задана формой
}
Т.е сейчас если я в файле ***.php изменю ($x/10)*($x/10) на ,скажем, pow($x,3), то получу кубическую параболу, а как сделать, что бы формула задавалась бы с формы, а не редактированием файла ***.php ?
BiDiFo
Отправлено: 16 Августа, 2011 - 14:30:52 • Тема: Построение графика по функции заданной пользователем • Форум: Вопросы новичков
Ответов: 11 Просмотров: 632
Задача - Построить график некой функции, которую пользователь задает в форме.
Есть форма, в которой пользователь задает длину оси Х и формулу графика (например ($x/10)*($x/10) ). Есть фунция для построения графика
CODE (
php ):
скопировать код в буфер обмена
...
function grafiki ( $x ) { // функция, график которой рисуем
// $x - значение аргумента функции
// возвращаемое значение - значение функции от данного аргумента
return ( $x / 10) * ( $x / 10) ;
}
...
for ( $x = 0.001 ; $x < $x0 ; $x += $ks ) {
if (
/* функция, начало */
$y = grafiki( $x )
/* функция, конец */
) {
if ( $x >= 0) $d = 1 ;
else $d = 0 ;
$qx = $x * $m ;
$y = $y * $m ;
imageline ( $img , 50
+ $d + $qx , 550
- $y * 10
, 50
+ $d + $qx , 550
- $y * 10
, $grcolor ) ; }
...
}
Вопрос - как сделать так, что бы grafiki($x) возвращала значение заданное в форме пользователем?
При этом форма передает методом post данные, заданные пользователем, в файл ***.php - отвечающий за построение графика.
Страниц (1): [1]
Powered by ExBB FM 1.0 RC1. InvisionExBB