Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <html>
- <head>
- <meta charset="UTF-8">
- <link rel="stylesheet" href="css/index.css"/>
- <title>Draw Function's Curve</title>
- <script src="js/jquery.min.js"></script>
- <script src="js/Chart.min.js"></script>
- </head>
- <style>
- .input{
- margin: 0 auto;
- text-align: center;
- padding: 0;
- display: table;
- }
- .input>li{
- display: table-cell;
- padding: 0 10px;
- position: relative;
- }
- .input > li:first-child #fx{
- min-width: 150px;
- }
- .input>li input[type="text"]{
- width: 50px;
- height: 25px;
- }
- .output{
- }
- .output canvas#res{
- margin: 15px auto;
- display: block;
- }
- </style>
- <body>
- <div class="nav-main">
- <div class="logo">
- <a href="index.php">
- Apps
- </a>
- </div>
- <ul>
- <li>
- <a href="#" class="nav-item">
- Calcultor ❯</a>
- <div class="nav-content">
- <div class="nav-sub">
- <ul>
- <li>
- <a href="calc.php">
- Simple Calculator
- </a>
- </li>
- <li>
- <a href="calc_smart.php">
- Smart Calculator
- </a>
- </li>
- </ul>
- </div>
- </div>
- </li>
- <li>
- <a href="#" class="nav-item">
- Algorithms ❯</a>
- <div class="nav-content">
- <div class="nav-sub">
- <ul>
- <li>
- <a href="gcdex.php">
- GCD Extended
- </a>
- </li>
- </ul>
- </div>
- </div>
- </li>
- <li>
- <a href="#" class="nav-item">
- Converters ❯</a>
- <div class="nav-content">
- <div class="nav-sub">
- <ul>
- <li>
- <a href="base_converter.php">
- Base Converter
- </a>
- </li>
- <li>
- <a href="angle_converter.php">
- Angle Converter
- </a>
- </li>
- </ul>
- </div>
- </div>
- </li>
- <li>
- <a href="#" class="nav-item">
- Solvers ❯</a>
- <div class="nav-content">
- <div class="nav-sub">
- <ul>
- <li>
- <a href="pell_equation.php">
- Pell's Equation
- </a>
- </li>
- <li>
- <a href="modular_equation_1.php">
- 1st Degree Modular Equation
- </a>
- </li>
- <li>
- <a href="2nd_deg_eq.php">
- Second Degree Equation
- </a>
- </li>
- </ul>
- </div>
- </div>
- </li>
- <li>
- <a href="#" class="nav-item">
- Cryptography ❯</a>
- <div class="nav-content">
- <div class="nav-sub">
- <ul>
- <li>
- <a href="rsa_encryption.php">
- RSA Encryption
- </a>
- </li>
- <li>
- <a href="base64_enc.php">
- Base64 Encryption
- </a>
- </li>
- </ul>
- </div>
- </div>
- </li>
- </ul>
- </div>
- <script src="js/dd.js"></script> <div class="container">
- <ul class="input">
- <li>
- <div>
- <label for="fx">f(x)=</label>
- <input type="text" id="fx" value="exp(x)">
- </div>
- </li>
- <li>
- <div>
- <label for="min">[</label>
- <input type="text" id="min" value="-5" placeholder="xmin">
- </div>
- </li>
- <li>
- <div>
- <label for="max">, </label>
- <input type="text" id="max" value="5" placeholder="xmax">
- ]
- </div>
- </li>
- <li>
- <div>
- <input type="text" id="step" value="0.5" placeholder="step">
- </div>
- </li>
- <li>
- <div>
- <input type="button" id="draw" value="Draw">
- </div>
- </li>
- </ul>
- <div class="output" id="canvas-parent">
- <canvas id="res" width="540" height="400">
- </canvas>
- </div>
- <script>
- function xs(min, max, step){
- var r = [], k=min;
- while( k <= max ){
- r.push(k);
- k += step;
- }
- return r;
- }
- function ys(fx, xs){
- var r = [], k=0;
- while( k < xs.length ){
- r.push( sub(fx, xs[k]) );
- k++;
- }
- return r;
- }
- function sub(fx, x){
- console.log(eval(fx));
- return eval(fx);
- }
- function ftojf(fx) {
- var r= fx.replace(/cos/g,"Math.cos")
- .replace(/sin/g,"Math.sin")
- .replace(/tan/g,"Math.tan")
- .replace(/ln/g,"Math.log")
- .replace(/log/g,"Math.log10")
- .replace(/exp/g,"Math.exp")
- .replace(/sqrt/g,"Math.sqrt")
- .replace(/abs/g,"Math.abs")
- .replace(/pow/g,"Math.pow");
- console.log(r);
- return r;
- }
- var fx = $('#fx');
- var draw = $('#draw');
- var mi = $('#min');
- var ma = $('#max');
- var ste = $('#step');
- var canv_p = $("#canvas-parent");
- var ctx, data, myLineChart;
- draw.click(function(){
- var vi= parseFloat(mi.val()), va=parseFloat(ma.val()),
- vte= parseFloat(ste.val()), lfx=ftojf(fx.val());
- if( check(vi, va, vte) ){
- canv_p.empty();
- canv_p.append("<canvas id='res' width='540' height='400'></canvas>");
- var labels = xs(vi, va, vte);
- var datas = ys(lfx, labels);
- ctx = document.getElementById("res").getContext("2d");
- data = {
- labels: labels,
- datasets: [
- {
- label: "My First Curve",
- fillColor: "transparent",
- strokeColor: "rgba(220,0,0,1)",
- pointColor: "transparent",
- pointStrokeColor: "transparent",
- pointHighlightFill: "#00f",
- pointHighlightStroke: "transparent",
- data: datas
- }
- ]
- };
- myLineChart = new Chart(ctx).Line(data);
- }
- });
- var isnbr = function(n){
- var str = n;
- var patt = /^-?(\d+|\d+\.\d+|\.\d+|\d+\.)$/g;
- var res = patt.test(str);
- return res;
- }
- var check = function (a, b, c) {
- if( a=="" || b=="" || c=="" ){
- return false;
- }
- else if( !isnbr(a) || !isnbr(b) || !isnbr(c) ){
- return false;
- }
- return true;
- }
- </script>
- </div>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment