Compare commits

..

3 commits

Author SHA1 Message Date
Kizarm
775efe0f4a remoce zip 2023-11-27 15:21:34 +01:00
Kizarm
9be3a36449 Merge branch 'pages' of https://code.nolog.cz/Kizarm/Calculator into pages 2023-11-27 15:20:27 +01:00
Kizarm
a3290fb03f update 2023-11-27 15:19:22 +01:00
6 changed files with 23 additions and 10 deletions

4
.gitignore vendored Normal file
View file

@ -0,0 +1,4 @@
# kdevelop
.kde*
*.kdev4
bin/*

BIN
flex.zip

Binary file not shown.

View file

@ -33,13 +33,17 @@
</p> </p>
<p>Je to tedy jednoduchý kalkulátor, jde napsat výraz s normální notací (+-*/^), obsahující čísla (i desetinná), <p>Je to tedy jednoduchý kalkulátor, jde napsat výraz s normální notací (+-*/^), obsahující čísla (i desetinná),
který to normálně vyhodnotí. Postupně přibyly proměnné (jen písmenkové řetězce), které mohou mít i rozsah ve který to normálně vyhodnotí. Postupně přibyly proměnné (jen písmenkové řetězce), které mohou mít i rozsah ve
kterém se pak výraz zobrazí jako funkce. Komentáře jsou ve složených závorkách. Vložené matematické funkce kterém se pak výraz zobrazí jako funkce. Syntaxe je <br>
proměnná = dolní_mez , horní_mez , počet_bodů<br>
a použije se pro vodorovnou osu, poslední řádek je pak výraz, jehož hodnota je na svislé ose. Ostatní "proměnné"
jsou pak fakticky jen pojmenované konstanty. Zobrazovaných funkcí (výrazů) může být víc, první určí limity
zobrazení na ose "y". Komentáře jsou ve složených závorkách. Vložené matematické funkce
jsou sin(), cos(), exp(), log() (přirozené).<b>Na konci výrazu musí být ENTER.</b> jsou sin(), cos(), exp(), log() (přirozené).<b>Na konci výrazu musí být ENTER.</b>
</p> </p>
<p>Jsou v tom chyby, celé je to vlasně hloupost, celé by to šlo napsat v javascriptu mnohem jednodušeji, <p>Jsou v tom chyby, celé je to vlasně hloupost, celé by to šlo napsat v javascriptu mnohem jednodušeji,
ale v podstatě to funguje a jde si podle toho udělat představu, jak daná funkce vypadá. Zdrojáky v licenci ale v podstatě to funguje a jde si podle toho udělat představu, jak daná funkce vypadá. Odkaz na zdrojáky v licenci
MIT <a href="flex.zip">přikládám</a>. Pro kompilaci je použit jen clang a jím kompilovaná C-čková knihovna MIT <a href="https://code.nolog.cz/Kizarm/Calculator" target="_blank">přikládám</a>. Pro kompilaci je použit jen
<a href="https://sourceware.org/newlib/" target="_blank">newlib</a>. clang a jím kompilovaná C-čková knihovna <a href="https://sourceware.org/newlib/" target="_blank">newlib</a>.
</p> </p>
</div> </div>
</body> </body>

View file

@ -28,7 +28,6 @@ window.onload = async function() {
const utf8decoder = new TextDecoder(); const utf8decoder = new TextDecoder();
const obj = JSON.parse (utf8decoder.decode(view)); const obj = JSON.parse (utf8decoder.decode(view));
// console.log (obj); // console.log (obj);
if (!obj) obj = '{"name":"nothing"}';
polyLine (xview, yview, len, obj); polyLine (xview, yview, len, obj);
}, },
}, },
@ -86,13 +85,16 @@ function drawLine (ctx, line, x, y) {
} }
ctx.stroke(); ctx.stroke();
} }
const colors = ['#00ff00', '#ff0000', '#00ffff', '#ff00ff'];
var colorIndex = 0;
function polyLine (ax, ay, len, obj) { function polyLine (ax, ay, len, obj) {
// console.log (ax, ay); // console.log (ax, ay);
const ctx = canvas.getContext("2d"); const ctx = canvas.getContext("2d");
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.font = '16px serif';
ctx.textAlign = 'left';
if (obj.name === "axes") { if (obj.name === "axes") {
colorIndex = 0;
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.font = '16px serif';
ctx.textAlign = 'left';
drawLine (ctx, obj.x, 0, 0); drawLine (ctx, obj.x, 0, 0);
drawLine (ctx, obj.y, 0, 0); drawLine (ctx, obj.y, 0, 0);
const ndotsx = obj.xdots.length; const ndotsx = obj.xdots.length;
@ -106,7 +108,7 @@ function polyLine (ax, ay, len, obj) {
ctx.lineTo(ax[n], ay[n]); ctx.lineTo(ax[n], ay[n]);
} }
ctx.lineWidth = 3; ctx.lineWidth = 3;
ctx.strokeStyle = "#00ff00"; ctx.strokeStyle = colors [colorIndex++ % 4];
ctx.stroke(); ctx.stroke();
} }
async function getFile (name) { async function getFile (name) {

Binary file not shown.

View file

@ -2,6 +2,9 @@
max=10 max=10
x=-max,max,1000 x=-max,max,1000
a=1/4 a=1/4
z=10
omega=2*pi omega=2*pi
phi=omega/4 phi=omega/4
1.e-8 * sin (omega*x - phi) * exp (-(x*a)^2) z * sin (omega*x + phi) * exp (-(x*a)^2)
z * exp (-(x*a)^2) {kladná obálka}
-z * exp (-(x*a)^2) {záporná obálka}