yang131

导航

Beizer。。。。。

<html>
<head>AS</head>
<script>
	var cvs;
	var context;
	//context.fill();//填充
    //context.stroke();//绘制边框
	//context.fillStyle = "#FF0000";
	//context.fillRect(20,20,200,200); 
	
	function DrawBezier(p0,p1,p2)
	{
		context.strokeStyle = "#000000";
		context.beginPath();

		for(var i = 0;i < 1;i += 0.001)
		{
			var x0 = (1 - i) * (1-i) * p0.x;
			var y0 = (1 - i) * (1-i) * p0.y;
			var x1 = (1 - i) * 2*i * p1.x;
			var y1 = (1 - i) * 2*i* p1.y;
			var x2 = i * i * p2.x;
			var y2 = i * i * p2.y;
			if(i == 0)
				context.moveTo(x0+x1+x2,y0+y1+y2);
			else
				context.lineTo(x0+x1+x2,y0+y1+y2); 
		}
		//context.closePath();
		context.stroke();
	}
	// p1,p2为控制点
	function DrawBezier3(p0,p1,p2,p3)
	{
		context.strokeStyle = "#000000";
		context.beginPath();

		for(var i = 0;i < 1;i += 0.001)
		{
			var a = 1 - i;
			var x0 = a * a * a * p0.x;
			var y0 = a * a * a * p0.y;
			var x1 = 3 * i * i * a * p1.x;
			var y1 = 3 * i * i * a * p1.y;
			var x2 = 3 * i * a * a  * p2.x;
			var y2 = 3 * i * a * a  * p2.y;
			var x3 = i * i * i * p3.x;
			var y3 = i * i * i * p3.y;
			var x = x0 + x1 + x2 + x3;
			var y = y0 + y1 + y2 + y3;
			if(i == 0)
				context.moveTo(x,y);
			else
				context.lineTo(x,y); 
		}
		//context.closePath();
		context.stroke();
	}
	function DrawPoint(x,y,rad)
	{
		context.fillStyle = "#FF0000";
		context.beginPath();
		//ctx.arc(开始原点x,开始原点y,半径,起始弧度,终止弧度,true表示逆时针动画)
		context.arc(x, y, rad, rad, Math.PI * 2, true);
		context.closePath();
		context.stroke();
		context.fill();
	}
	function DrawP(p)
	{
		DrawPoint(p.x,p.y,5);
	}
	
	var pA = {"x":20,"y":280};
	var pB = {"x":120,"y":280};
	var pC = {"x":220,"y":20};
	var pD = {"x":120,"y":20};

	window.onload = function()
	{
		cvs = document.getElementById("cvs");
		context = cvs.getContext("2d");
		context.lineWidth="1";
		context.strokeStyle = "#00000";
		DrawBezier(pA,pB,pC);
		DrawBezier3(pA,pB,pD,pC);
		DrawP(pA);
		//DrawP(pB);
		DrawP(pC);
		//DrawP(pD);
	};
	var id = 0;
	function onChange(v)
	{
		id = v;
	}
	function onClick(v)
	{
		var x = document.getElementById("x").value;
		var y = document.getElementById("y").value;
		console.log(x+","+y);
		if(id == "0")
		{
			pA.x = parseInt(x);
			pA.y = parseInt(y);
		}else if(id == "1")
		{
			pB.x = parseInt(x);
			pB.y = parseInt(y);
		}else if(id == "2")
		{
			pC.x = parseInt(x);
			pC.y = parseInt(y);
		}else if(id == "3")
		{
			pD.x = parseInt(x);
			pD.y = parseInt(y);
		}
		//cvs.height = height;
		context.clearRect(0,0,cvs.width,cvs.height);
		DrawBezier(pA,pB,pC);
		DrawBezier3(pA,pB,pD,pC);
		DrawP(pA);
		DrawP(pB);
		DrawP(pC);
		DrawP(pD);
	}
	
</script>
<body>
	<div>
		<input type="text" id="id" onchange="onChange(this.value)">
		<input type="text" id="x" onchange="">
		<input type="text" id="y" onchange="">
		<button onclick="onClick()">click</button>
	</div>
	<canvas id="cvs" width="800px" height="800px"></canvas>
	
	
	
</body>
</html>
<script>
	
	
</script>

  

posted on 2021-03-09 16:17  NoNight  阅读(53)  评论(0编辑  收藏  举报