Hallo,
Ik ben als onderdeel van een rekenmachine een grafisch plaatje aan het maken in GD dat de lijn van een formule tekent.
Zie: http://213.84.125.206/ashramjp/pws/grafiek/grafiek.php
Het werkt al aardig, er is alleen 1 probleem:
Het lijkt wel alsof de lijn verkeerd om getekent wordt ofzo, de formule is namelijk: 2X
Dat zou natuurlijk een stijgende lijn moeten zijn, en niet een dalende zoals in het plaatje. Kan iemand mij vertellen waar de fout zit?
Alvast bedankt!
Ik ben als onderdeel van een rekenmachine een grafisch plaatje aan het maken in GD dat de lijn van een formule tekent.
Zie: http://213.84.125.206/ashramjp/pws/grafiek/grafiek.php
Het werkt al aardig, er is alleen 1 probleem:
Het lijkt wel alsof de lijn verkeerd om getekent wordt ofzo, de formule is namelijk: 2X
Dat zou natuurlijk een stijgende lijn moeten zijn, en niet een dalende zoals in het plaatje. Kan iemand mij vertellen waar de fout zit?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
| <?php header("Content-type: image/png"); // We maken een GIF/PNG image... function evalsum($sum) { // Sum may only contain the following characters: $check = strtr($sum, "0123456789+-*/()", " "); if(trim($check) == "" ) { $to_eval="\$evalled=" . $sum . ";"; eval($to_eval); } else { $evalled = "Evaluation error"; } return $evalled; } /* Start Variables */ $pFont = "/var/www/html/ashramjp/pws/grafiek/ariblk.ttf"; $formule[0] = "2*X - 2"; $formule[1] = "5"; $xMin = -10; $xMax = 10; $yMin = -10; $yMax = 10; $xStap = 2; $pLengteX = 500; // Lengte van het plaatje op de X as $pLengteY = 500; // Lengte van het plaatje op de Y as /* De grafiek bouwen */ // Maakt het plaatje $grafiek = ImageCreate($pLengteX, $pLengteY); // De eerste ImageColorAllocate is automatisch de achtergrondkleur $kAchtergrond1 = ImageColorAllocate($grafiek, 255, 255, 255); $kAchtergrond2 = ImageColorAllocate($grafiek, 255, 255, 153); $kAchtergrond3 = ImageColorAllocate($grafiek, 255, 255, 201); // Grafiek achtergrond ImageFilledRectangle($grafiek, 0, 0, $pLengteX, $pLengteY, $kAchtergrond2); // Lichtere achtergrond ImageFilledRectangle($grafiek, 0 + 3, 0, $pLengteX, $pLengteY - 3, $kAchtergrond3); /* Kleuren */ $kOranjeDonker = ImageColorAllocate($grafiek, 195, 133, 24); $kOranje = ImageColorAllocate($grafiek, 226, 182, 36); $kZwart = ImageColorAllocate($grafiek, 0, 0, 0); /* Tekenen */ if($xMin < 0 AND $xMax < 0) $gBreedte = ($xMin * -1) + ($xMax * -1); if($xMin < 0 AND $xMax > 0) $gBreedte = ($xMin * -1) + $xMax; if($xMin > 0 AND $xMax > 0) $gBreedte = $xMin + $xMax; if($yMin < 0 AND $yMax < 0) $gHoogte = ($yMin * -1) + ($yMax * -1); if($yMin < 0 AND $yMax > 0) $gHoogte = ($yMin * -1) + $yMax; if($yMin > 0 AND $yMax > 0) $gHoogte = $yMin + $yMax; /* Middenlijn Horizontaal */ if($xMin > 0 AND $xMax > 0 OR $xMin < 0 AND $xMax < 0) { // Geen horizontale middenlijn } else { $mHplaats = ($xMin * -1) / $gBreedte * $pLengteX; } /* Middenlijn Verticaal */ if($yMin > 0 AND $yMax > 0 OR $yMin < 0 AND $yMax < 0) { // Geen verticale middenlijn } else { $mVplaats = ($yMin * -1) / $gHoogte * $pLengteY; } /* Grafieklijnen */ for($i = 0; $i < count($formule); $i++) { $oudPosY = 0; for($posX = $xMin; $posX <= $pLengteX; $posX = $posX + $xStap) { // Vult de nieuwe X in $formTemp = $formule[$i]; $posY = round(evalsum(str_replace("X", $posX, $formTemp)),0); $posX2 = ($posX / $gBreedte) * $pLengteX; $posY2 = ($posY / $gHoogte) * $pLengteY; if($posY2 > 0) $posY3 = $mHplaats - $posY2; if($posY2 < 0) $posY3 = $mHplaats + ($posY2 * -1); if($posY2 == 0) $posY3 = $mHplaats; if($posX2 > 0) $posX3 = $mVplaats - $posX2; if($posX2 < 0) $posX3 = $mVplaats + ($posX2 * -1); if($posX2 == 0) $posX3 = $mVplaats; // Zet een streep if($oudPosY) { ImageLine($grafiek, $oudPosX, $oudPosY, $posX3, $posY3, $kZwart); ImageTTFText($grafiek, 6, 0, $oudPosX, $oudPosY, $kZwart, "$pFont", "$posX3:$posY3"); } $oudPosX = $posX3; $oudPosY = $posY3; } } // Middenlijnen ImageLine($grafiek, $mHplaats, 0, $mHplaats, $pLengteY, $kOranje); ImageLine($grafiek, 0, $mVplaats, $pLengteX, $mVplaats, $kOranje); ImagePNG($grafiek); // Sla het op als PNG ImageDestroy($grafiek); // Verwijder de resten ?> |
Alvast bedankt!