Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html5画布Javascript库?_Javascript_Jquery_Html_Canvas - Fatal编程技术网

Html5画布Javascript库?

Html5画布Javascript库?,javascript,jquery,html,canvas,Javascript,Jquery,Html,Canvas,我想知道是否有javascript库可以帮助渲染图形。我搜索了谷歌,没有找到任何工具。我想在画布上绘制高斯曲线。我花了15秒才找到。玩它,直到它得到你喜欢的 $(document).ready(drawGaussian); var canvasContext; var points; var noise = 0; function drawGaussian() { canvasContext = document.getElementById("gaussian-canvas").ge

我想知道是否有javascript库可以帮助渲染图形。我搜索了谷歌,没有找到任何工具。我想在画布上绘制高斯曲线。

我花了15秒才找到。玩它,直到它得到你喜欢的

$(document).ready(drawGaussian);

var canvasContext;
var points;
var noise = 0;

function drawGaussian()
{   
canvasContext = document.getElementById("gaussian-canvas").getContext("2d");

document.getElementById("gaussian-canvas").onclick = cycleNoise;

cycleNoise();
}

function cycleNoise()
{   
canvasContext.clearRect(0, 0, 400, 400);

var m = Math.random() > .4
var amount = Math.round(Math.random() * 20000);
var size = Math.round(Math.random() * 3)+1;

document.getElementById("particles").innerHTML = amount;
document.getElementById("size").innerHTML = size;

switch(noise)
{
    case 0:
        drawGaussianField(amount, size, 200, 200, 400, 100, m);
        document.getElementById("type").innerHTML = (m ? "Monochromatic" : "Chromatic") + " Field";
        break;
    case 1:
        drawGaussianCurves(amount, size, 200, 200, 400, 150, m);
        document.getElementById("type").innerHTML = (m ? "Monochromatic" : "Chromatic") + " Curves";
        break;
    case 2:
        drawGaussianDiamond(amount, size, 200, 200, 400, 130, m);
        document.getElementById("type").innerHTML = (m ? "Monochromatic" : "Chromatic") + " Diamond";
        break;
    case 3:
        drawGaussianOval(amount, size, 200, 200, 300, 300, m);
        document.getElementById("type").innerHTML = (m ? "Monochromatic" : "Chromatic") + " Circle";
        break;
    case 4:
        drawGaussianBurst(amount, size, 200, 200, 120, 120, m);
        document.getElementById("type").innerHTML = (m ? "Monochromatic" : "Chromatic") + " Burst";
        break;
}

noise++;

if(noise > 4) noise = 0;
}


function drawGaussianField(amount, thickness, x, y, width, height, monochromatic)
{
for(i = 0; i < amount; i++)
{
    points = getGaussianPoints();

    setColor(monochromatic);
    canvasContext.fillRect(x + ((width*.5) * points[3]), y + ((height*.5) * points[2]), thickness, thickness);  
}
}

function drawGaussianCurves(amount, thickness, x, y, width, height, monochromatic){
for(i = 0; i < amount; i++)
{
    points = getGaussianPoints();

    setColor(monochromatic);
    canvasContext.fillRect(x + ((width*.5) * points[0]), y + ((height*.5) * points[2]), thickness, thickness);  
}
}

function drawGaussianDiamond(amount, thickness, x, y, width, height, monochromatic){
for(i = 0; i < amount; i++)
{
    points = getGaussianPoints();

    setColor(monochromatic);
    canvasContext.fillRect(x + ((width*.5) * points[0]), y + ((height*.5) * points[3]), thickness, thickness);  
}
}

function drawGaussianOval(amount, thickness, x, y, width, height, monochromatic){
for(i = 0; i < amount; i++)
{
    points = getGaussianPoints();

    setColor(monochromatic);
    canvasContext.fillRect(x + ((width*.5) * points[0]), y + ((height*.5) * points[1]), thickness, thickness);  
}
}

function drawGaussianBurst(amount, thickness, x, y, width, height, monochromatic){
for(i = 0; i < amount; i++)
{
    points = getGaussianPoints();

    setColor(monochromatic);
    canvasContext.fillRect(x + ((width*.5) * points[2]), y + ((height*.5) * points[3]), thickness, thickness);  
}
}

function setColor(val){
if(val)
{
    canvasContext.fillStyle = '#ffffff';
}
else
{
    canvasContext.fillStyle = "#"+Math.floor(Math.random()*16777215).toString(16);
}
}

function getGaussianPoints(){
var x1, x2, w, y1, y2;

do {
    x1 = 2.0 * Math.random() - 1.0;
    x2 = 2.0 * Math.random() - 1.0;
    w = x1 * x1 + x2 * x2;
} while ( w >= 1.0 );

w = Math.sqrt( (-2.0 * Math.log( w ) ) / w );
y1 = x1 * w;
y2 = x2 * w;

return [x1, x2, y1, y2];
}
$(document).ready(drawGaussian);
var canvasContext;
var点;
var噪声=0;
函数()
{   
canvasContext=document.getElementById(“高斯画布”).getContext(“2d”);
document.getElementById(“高斯画布”).onclick=cycleNoise;
环烯醚();
}
函数cycleNoise()
{   
canvasContext.clearRect(0,040400);
var m=Math.random()>.4
var amount=Math.round(Math.random()*20000);
var size=Math.round(Math.random()*3)+1;
document.getElementById(“粒子”).innerHTML=金额;
document.getElementById(“size”).innerHTML=size;
开关(噪音)
{
案例0:
抽取高斯场(数量、大小、200、200、400、100、m);
document.getElementById(“type”).innerHTML=(m?“单色”:“彩色”)+“字段”;
打破
案例1:
提取高斯曲线(数量、大小,200、200、400、150、m);
document.getElementById(“type”).innerHTML=(m?“单色”:“彩色”)+“曲线”;
打破
案例2:
提取高斯指数(数量,大小,200,200,400,130,m);
document.getElementById(“type”).innerHTML=(m?“单色”:“彩色”)+“菱形”;
打破
案例3:
提取高斯新星(数量,大小,200,200,300,300,m);
document.getElementById(“type”).innerHTML=(m?“单色”:“彩色”)+“圆形”;
打破
案例4:
高斯冲击波(数量,大小,200,200,120,120,m);
document.getElementById(“type”).innerHTML=(m?“单色”:“彩色”)+“突发”;
打破
}
噪声++;
如果(噪声>4)噪声=0;
}
函数绘图高斯场(数量、厚度、x、y、宽度、高度、单色)
{
对于(i=0;i=1.0);
w=数学sqrt(-2.0*数学日志(w))/w);
y1=x1*w;
y2=x2*w;
返回[x1,x2,y1,y2];
}

有几个html5画布javascript库。其中比较完整的是paper.js,它是Raphael、paper和Processing javascript库之间的一个很好的比较,我已经使用并推荐了。它是积极维护和定期更新的。

Paper.js对于HTML5画布来说非常好。如前所述,您应该避免使用基于SVG或VML的库,因为大多数库都无法在Android设备上工作。

我预测,这将在不到20分钟内以重复问题或投票问题的形式结束。到目前为止,你找到了哪些工具?唯一值得一看的地方是html5画布教程。。。但是没有“图书馆”->。谢谢!你在哪里找到的?互联网是一个奇怪的地方@德拉恩:过一会儿你就会习惯的;)我知道,我离开web开发已经10年了,现在新的有趣的技术问世了,我重新发布了它。寻找好的信息是相当困难的。谢谢你的帮助。谢谢。。。我是为android开发的,所以rapahel是个大禁忌;)但是谢谢!