Javascript 计算交点坐标
我有两条线,我想计算它们的交点。 看 红线坐标Javascript 计算交点坐标,javascript,canvas,intersection,Javascript,Canvas,Intersection,我有两条线,我想计算它们的交点。 看 红线坐标 P1(150,0) P2(125,(stepsY+150)/2) 蓝线坐标 Q1(150150) Q2(125,(stepsY)/2) - 我发现你必须为每条线导出线性函数,比如f(x)=m*x+n,来计算交点 - 步骤1 要获得坡度m,请执行以下操作: m=(y2-y1)/(x2-x1) 红线坡度 mP=-((stepsY+150)/50) 蓝线坡度 mQ=-((stepsY/2)-150)/25) - 步骤2 第二步是定义y相交n: 红线y相交
P1(150,0)
P2(125,(stepsY+150)/2)
蓝线坐标
Q1(150150)
Q2(125,(stepsY)/2)
-
我发现你必须为每条线导出线性函数,比如f(x)=m*x+n
,来计算交点
-
步骤1
要获得坡度m,请执行以下操作:
m=(y2-y1)/(x2-x1)
红线坡度
mP=-((stepsY+150)/50)
蓝线坡度
mQ=-((stepsY/2)-150)/25)
-
步骤2
第二步是定义y相交n:
红线y相交
nP=((stepsY+150)/50)*150
蓝线y相交
nQ=((stepsY/2)-150)/25)*150)-150
-
步骤3
现在我可以导出函数:
红线函数
f(x)=mP*x+nP
f(x)=(((stepsY+150)/50)*x)+((stepsY+150)/50)*150
蓝线函数
f(x)=mQ*x+nQ
f(x)=(((stepsY/2)-150)/25)*x+((stepsY/2)-150)/25)*150)-150
-
步骤4
现在我需要你的帮助!
下一步是将这两个函数相等,如mP*x+nP=mQ*x+nQ
,但我不明白。
如果有人能帮忙,那就太好了
-
JS
var mouseX = 0;
var mouseY = 0;
var stepsY = 75;
var stepsX = 100;
var pageY = 0;
var pageX = 0;
$(window).on({
load: resizeCanvas()
});
function resizeCanvas() {
document.onmousemove = function(e) {
mouseX = e.pageX;
mouseY = e.pageY;
}
}
var loop = setInterval(function() {
var canvas = document.getElementById('canvas');
if (canvas.getContext) {
stepsY += ( ( 125 + parseInt(-mouseY / ($(document).height() / 85 ) )) - stepsY ) / 12;
stepsX += ( ( 125 + parseInt(-mouseX / ($(document).width() / 46 ) )) - stepsX ) / 12;
var ctx = canvas.getContext('2d');
if ( window.devicePixelRatio >= 2 ) {
canvas.width = 600;
canvas.height = 300;
canvas.style.width = "300px";
canvas.style.height = "150px";
ctx.scale(2,2);
} else {
canvas.style.width = "300px";
canvas.style.height = "150px";
}
ctx.clearRect(0, 0, window.innerWidth, window.innerHeight);
ctx.beginPath();
ctx.moveTo( 150, 0 );
ctx.lineTo( 125, (stepsY+150)/2 );
ctx.strokeStyle = "red";
ctx.stroke();
ctx.beginPath();
ctx.moveTo( 150, 150 );
ctx.lineTo( 125, (stepsY)/2 );
ctx.strokeStyle = "blue";
ctx.stroke();
}
}, 20);
因此,将你的方程设置为等于
mP*x + nP = mQ*x + nQ
然后解x得到
mP*x - mQ*x = nQ - nP
(mP - mQ)x = nQ - nP
x = (nQ - nP)/(mP - mQ)
(如果(mP-mQ)=0,则直线平行且没有交点)
y坐标是
y = mP * x + nP or y = mQ * x + nQ
这两个方程式应产生相同的y值(最大舍入误差)