Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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
Javascript 如何在画布html标记中绘制垂直线_Javascript_Jquery_Html_Canvas_Html5 Canvas - Fatal编程技术网

Javascript 如何在画布html标记中绘制垂直线

Javascript 如何在画布html标记中绘制垂直线,javascript,jquery,html,canvas,html5-canvas,Javascript,Jquery,Html,Canvas,Html5 Canvas,我有一行起始坐标(x1,y1)和结束坐标(x2,y2)。 我想在画布标记中从这条线的中间画一条垂直线 热情的回复或指导将不胜感激。要绘制一条垂直线,只需将其旋转90º,下面包含一些示例函数,如: function setTransformToLine(x1, y1, x2, y2) { const vx = x2 - x1; // get the line as vector const vy = y2 - y1; const len = Math.hypot(vx, vy);

我有一行起始坐标(x1,y1)和结束坐标(x2,y2)。 我想在画布标记中从这条线的中间画一条垂直线


热情的回复或指导将不胜感激。

要绘制一条垂直线,只需将其旋转90º,下面包含一些示例函数,如:

function setTransformToLine(x1, y1, x2, y2) {
  const vx = x2 - x1;   // get the line as vector
  const vy = y2 - y1;
  const len = Math.hypot(vx, vy); // For <= IE11 use Math.sqrt(vx * vx + vy * vy)
  const nx = vx / len; // Normalise the line vector. Making it one
  const ny = vy / len; // pixel long. This sets the scale

  // The transform is the normalised line vector for x axis, y at 90 deg 
  // and origin at line start
  ctx.setTransform(nx, ny, -ny, nx, x1, y1); // set transform

  return len;
}
函数设置转换线(x1、y1、x2、y2){
const vx=x2-x1;//将线作为向量获取
常数vy=y2-y1;

const len=Math.hypop(vx,vy);//对于而言,直线中间的坐标是两端坐标的平均值:

var midX = (x1 + x2) / 2;
var midY = (y1 + y2) / 2;
垂线的方向向量与原始直线相同,只是坐标被翻转,其中一个坐标乘以-1(哪个坐标乘以决定直线与原始直线是顺时针还是逆时针)。将该方向向量添加到中点,就得到了垂线

var dx = (x2 - x1);
var dy = (y2 - y1);
context.moveTo(midX, midY);
context.lineTo(midX + dy, midY - dx);
context.stroke();

这将绘制一条与原始直线长度相同的垂直线。如果要绘制不同的长度,则需要调整方向向量。有关详细信息,请阅读坐标几何图形和向量。

请添加当前代码我正在使用下面的代码上下文在画布中绘制一条直线。lineTo(x,y)context.stroke()并希望绘制与该线垂直的直线代码运行良好,但我希望从基线的中点绘制垂直线。在这种情况下,您需要得到中间,对于Xvar midX=line.x0+(line.x1 line.x0)*0.50;和Yvar midY=line.y0+(line.y1 line.y0)*0.50;
我已经得到了该基线的中点。我想从该中点画一条垂直线,非常适合我,谢谢你的指导