I have Bezier curves between 2 points. I would like to cut all the curves into two equal halves. One of my ideas is that I can control the value of "t". I will draw 2 curves for t = [0,0.5] and t = [0,5,1], but I do not know how to do this. Below is my code. I will not mind any other idea or suggestion
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>D3 test</title> <script src="http://d3js.org/d3.v3.min.js"></script> <script> var Over = function(){ d3.select(this) .style("stroke-opacity", 0.25); } var Out = function(){ d3.select(this) .transition().duration(200) .style("stroke-opacity", 0); } function curve(n,x1,y1,x2,y2){ var xr = (x1+x2)/2, yr = (y1+y2)/2, euDist = Math.sqrt(Math.pow(x2-x1,2)+Math.pow(y2-y1,2)), x3 = -y1+xr+yr, x4 = -y2+xr+yr, y3 = x1+yr-xr, y4 = x2+yr-xr, ctrl , curveDescription; svg.append('path') .attr("stroke", 'blue') .attr('fill','none') .style("stroke-opacity",0.25) .attr('d', 'M'+x3+','+y3+'L'+x4+','+y4) .attr('stroke-width',strokeWidth); for(var j=0;j<=n;j++){ ctrl = [(x4-x3)*j/n+x3 , (y4-y3)*j/n+y3] , curveDescription= 'M' +x1+',' +y1+ 'Q' +ctrl[0]+','+ctrl[1]+',' +x2+',' +y2; svg.append('path') .attr("stroke", 'blue') .attr('fill','none') .style("stroke-opacity",0.25) .attr('d', curveDescription) .attr('stroke-width',strokeWidth); svg.append('path') .attr("stroke", 'blue') .attr('fill','none') .style("stroke-opacity",0) .on("mouseover", Over) .on("mouseout", Out) .attr('d', curveDescription) .attr('stroke-width',strokeWidth*25); } } </script> </head> <body> <script> var w = 1268 , h = 680 , strokeWidth = 2; var svg = d3.select("body") .append("svg") .attr("width", w) .attr("height", h) curve(5, 100,100, 400,500); </script> </body> </html>