Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- //<zone de modification>
- function f($x) {
- $x = $x**2; return (1/4+$x-1/4*(2*$x+1)*cos(pi()*$x))/(1/2*$x+pi()**2/4*(1/exp($x)+$x-1));
- //j'ai mis ça pck c'est joli mais fais-toi plaisir et mets n'importe quel truc qui donne un chiffre par rapport à $x au lieu d'la ligne précédente
- }
- $round = 3; //nombres de chiffres après la virgule
- $minX = 4650; $maxX = INF; //les valeurs minimales et maximales de l'abscisse
- $minY = -1/3; $maxY = 1; //les valeurs minimales et maximales de l'ordonnée donnant des █ et pas des ▒
- $zoom = 40; $step = 1/21; //nombres d'espaces derrière (ou devant) l'abscisse ($zoom) et nombre d'incrémentation/pas ($step)
- $noOuterBounds = true; //détermine si on néglige ou non de montrer les zones où la valeur ordonnée est supérieure à $maxY ou inférieur à $minY
- $secondsToStop = 0.05; //donne un temps de latence de $secondsToStop par affichage de point
- //</zone de modification>
- function plot($x,$y,$n,$min,$max,$r) {
- $N = floor(($y-$min)/($max-$min)*(2*$n+1));
- $bih = "";
- for ($i = 1; $i <= $n; $i++) {
- $bih .= " ";
- }
- $bih .= "O";
- for ($i = 1; $i <= $n; $i++) {
- $bih .= " ";
- }
- $str = "";
- for ($i = 0; $i < strlen($bih); $i++) {
- if ($N <= $n && $N > 0) {
- if ($i == $N - 1) {
- $str .= "█";
- } else {
- $str .= $bih[$i];
- }
- } elseif ($N > $n && $N <= 2*$n+1) {
- if ($i == $N) {
- $str .= "█";
- } else {
- $str .= $bih[$i];
- }
- } elseif ($N <= 0) {
- if ($i == 0) {
- $str .= "▒";
- } else {
- $str .= $bih[$i];
- }
- } elseif ($N > 2*$n+1) {
- if ($i == strlen($bih)-1) {
- $str .= "▒";
- } else {
- $str .= $bih[$i];
- }
- }
- }
- return $str . " x≈".round($x,$r).",f(x)≈".round($y,$r);
- }
- $count = 0;
- print "Attention : prenez soin à exagérer un peu les valeurs par rapport à ce que vous cherchez à dessiner.\n\n";
- $date = microtime(true);
- for ($n = $minX; $n <= $maxX; $n += $step) {
- $newdate = microtime(true);
- $count++; $dt += ($newdate-$date)*100;
- if ($noOuterBounds == true && strpos(plot($n,f($n),$zoom,$minY,$maxY,$round),"█")) { print plot($n,f($n),$zoom,$minY,$maxY,$round)."\n"; }
- elseif ($noOuterBounds == false) { print " ".plot($n,f($n),$zoom,$minY,$maxY,$round)."\n"; }
- $date = $newdate;
- usleep($secondsToStop*1000000);
- }
- echo `pause>nul`;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement