Canvas画图 相位图

xiaoxiao2021-02-28  12

<html><head></head><body><canvas id="drawing"  height="200" style="">A Drawing of something</canvas></body><script type="text/javascript">function initAngle(json) {    var canvas = document.getElementById("drawing");    var vr=99;    var ir=60;    var v1Length=99;    var i1Length=60;    var x0=100;    var y0=100;    var jsonObj=JSON.parse(json);//json.parseJSON();    if(jsonObj){        var vUom="V";        var iUom="A";        var angleUom="°";        var v1=jsonObj.v1.toFixed(2);        var v2=jsonObj.v2.toFixed(2);        var v3=jsonObj.v3.toFixed(2);        var i1=jsonObj.i1.toFixed(2);        var i2=jsonObj.i2.toFixed(2);        var i3=jsonObj.i3.toFixed(2);        var i1v1=jsonObj.i1v1.toFixed(2);        var i2v2=jsonObj.i2v2.toFixed(2);        var i3v3=jsonObj.i3v3.toFixed(2);        var v1v2=jsonObj.v1v2.toFixed(2);        var v1v3=jsonObj.v1v3.toFixed(2);        var i2v1=parseFloat(i2v2)+parseFloat(v1v2);        var i3v1=parseFloat(i3v3)+parseFloat(v1v3);        if (canvas.getContext) {            var cxt=canvas.getContext("2d");            clearCanvas();            //电压圆            cxt.beginPath();            cxt.arc(x0,y0,vr,0,2*Math.PI,false);            cxt.lineWidth=1;            cxt.strokeStyle="green";            cxt.stroke();//画空心圆            cxt.closePath();            //电流圆            cxt.beginPath();            cxt.arc(x0,y0,ir,0,2*Math.PI,false);            cxt.strokeStyle="#e4c0c0";            cxt.stroke();            cxt.closePath();            //V1线            cxt.beginPath();            cxt.moveTo(x0,y0);            cxt.lineTo(x0+vr,y0);            cxt.translate(x0,0);            cxt.font="bold 14px Arial";            cxt.textAlign="center";            cxt.textBaseline="middle";//文本的基线            cxt.fillText("V1",x0,y0);            cxt.strokeStyle="red";            cxt.stroke();            cxt.closePath();            //V2线            drawLineV1(v1,v2,v1v2,vr,0,y0,cxt,"V2");            //V3线            drawLineV1(v1,v3,v1v3,vr,0,y0,cxt,"V3");            //I1线            drawLineI1(i1,i1v1,ir,0,y0,cxt,"I1");            //I2线            var i2R=((i2/i1)*ir);            drawLineI1(i2,i2v1,i2R,0,y0,cxt,"I2");            //I3线            var i3R=((i3/i1)*ir);            drawLineI1(i3,i3v1,i3R,0,y0,cxt,"I3");        }    }} function clearCanvas()    {        var c=document.getElementById("drawing");        var cxt=c.getContext("2d");        c.height=c.height;    }//电压V2 V3线function drawLineV1(v1,v2,angle,r,x,y,cxt,text){    var v2x;    var v2y;    var vr=(v2/v1)*r;    var vx=vr*Math.cos(2*Math.PI*angle/360);    if(angle>90&&angle<270){        v2x=x+vx;    }else{        v2x=x+vx;    }    var vy=vr*Math.sin(2*Math.PI*angle/360);    v2y=y-vy;    cxt.beginPath();    cxt.moveTo(x,y);    cxt.lineTo(v2x,v2y);    //cxt.translate(x,y);    cxt.font="bold 14px Arial";    cxt.textAlign="center";    cxt.textBaseline="middle";//文本的基线    cxt.fillText(text,v2x,v2y);    cxt.strokeStyle="red";    cxt.stroke();    cxt.closePath();}//电流I1 I2 I3线function drawLineI1(i1,angle,r,x,y,cxt,text){    var ix;    var iy;    var ix2=r*Math.cos(2*Math.PI*angle/360);    if(angle>90&&angle<270){        ix=x+ix2;    }else{        ix=x+ix2;    }    var iy2=r*Math.sin(2*Math.PI*angle/360);    iy=y-iy2;    cxt.beginPath();    cxt.moveTo(x,y);    cxt.lineTo(ix,iy);    //cxt.translate(x,y);    cxt.font="bold 14px Arial";    cxt.textAlign="center";    cxt.textBaseline="middle";//文本的基线    cxt.fillText(text,ix,iy);    cxt.strokeStyle="blue";    cxt.stroke();    cxt.closePath();}initAngle('{"base": null,"v1": 221.70000000000002,"v2": 222.8,"v3": 220.3,"i1": 1.8780000000000001,"i2": 1.96,"i3": 1.159,"i1v1": 1.1400000000000001,"i2v2": 1.1400000000000001,"i3v3": 1.4000000000000001,"v1v2": 119.72,"v1v3": 239.94}');</script></html>

转载请注明原文地址: https://www.6miu.com/read-2100340.html

最新回复(0)