Javascript 如何在典型编程语言中使用逗号表示法表示二维点计算的向量代数?

Javascript 如何在典型编程语言中使用逗号表示法表示二维点计算的向量代数?,javascript,math,vector,trigonometry,algebra,Javascript,Math,Vector,Trigonometry,Algebra,最近,我在math.stackexchange.com上就一个关于二维代数的问题寻求帮助。答案很快就给出了,但我不熟悉数学符号,给出答案的人已经停止回答我的问题。虽然我非常感谢BStar提供了这些信息,但他/她已经停止了在网站和聊天中的回复,并且似乎没有兴趣帮助我理解它,以至于我可以编写编程代码来计算所需的点P。我尊重这一点,但这让我现在陷入困境。有人能帮我把这一系列步骤转换成Javascript之类的编程语言吗?(我实际上是用PHP工作的,但是Javascript在stackoverflow上

最近,我在math.stackexchange.com上就一个关于二维代数的问题寻求帮助。答案很快就给出了,但我不熟悉数学符号,给出答案的人已经停止回答我的问题。虽然我非常感谢BStar提供了这些信息,但他/她已经停止了在网站和聊天中的回复,并且似乎没有兴趣帮助我理解它,以至于我可以编写编程代码来计算所需的点
P
。我尊重这一点,但这让我现在陷入困境。有人能帮我把这一系列步骤转换成Javascript之类的编程语言吗?(我实际上是用PHP工作的,但是Javascript在stackoverflow上的可运行代码段中表示会更方便。。我很高兴能将任何当前的语言翻译成PHP)

邮局在

答案是乳胶,但这里有一个截图:

作者BStar对该过程的最新描述:“这是一个过程:首先计算cos B并使用arccos得到B。然后计算tanθ并使用| BP |从两个三角形中得到θ。知道了这些,我们可以得到向量BA'和B'P,从而得到向量OA和OP。在这种情况下,我们得到θ到grt向量BA',而不是相反。"

我可以一直跟踪到第(5)步逗号符号出现,即
k=(-xb,-yb)(xc-xb,yc-yb)/ac
。这似乎使k成为一个二维向量,但我认为我从未使用过这种符号。后来,k在步骤
(6)
(6a)中使用
计算θ,它同时出现在分数的分子和分母中。我不知道如何展开它来获得θ的实际值

(编辑注:作者BStar假设A点在原点,所以
(xa,ya)=(0,0)
,但我无法在现实世界中做出这种假设。因此,步骤1中的向量
BA
实际上是
(xa-xb,ya-yb)
,上面显示的
k
的公式实际上是
k=(xa-xb,ya-yb)(xc-xb,yc-yb)/ac
。此扩展需要在计算过程中进行,但这不是一个重大更改。)

如果我们用Javascript来构建这个框架,我可以在计算开始时为大家展示一个框架。表示BStar给出的数学证明的每一步都是无效的,但我不确定在数学证明中哪些步骤可以留作过程,哪些步骤需要在代码中阐述

/*已知点-A、B、C*/
变量xa=10,ya=10;
var xb=100,yb=500;
var xc=700,yc=400;
/*已知长度m和n(与AB和AC垂直的距离)*/
var m=30;
var n=50;
/*我们要计算的点,P*/
var-px=0,py=0;
/*计算如下-一些Javascript注释:
*var a=数学sin(angInRadians);
*var b=数学asin(对边/斜边);
*var c=Math.pow(数字,2);//将数字平方
*var d=数学sqrt(数字);
*/
/*打印结果*/

console.log('Result:P(“+px+”,“+py+”));

我想我可以把你带到B的角度,但我的数学不是很好,对所有这些变量都迷路了。如果你一直在计算角度,试试这个,看看它是否符合你的要求。它似乎符合第5步的要求,但仔细检查我的工作

let pointA = {x: 100, y: 0};
let pointB = {x: 20, y: 20};
let pointC = {x: 0, y: 100};

let distBA_x = pointB.x - pointA.x;
let distBA_y = pointB.y - pointA.y;
//let BA_a = Math.sqrt(distBA_x*distBA_x + distBA_y*distBA_y);

let distBC_x = pointB.x - pointC.x;
let distBC_y = pointB.y - pointC.y;
//let BC_c = Math.sqrt(distBC_x*distBC_x + distBC_y*distBC_y);

var angle = Math.atan2(distBA_x * distBC_y - distBA_y * distBC_x, distBA_x * distBC_x + distBA_y * distBC_y);
if(angle < 0) {angle = angle * -1;}
var degree_angle = angle * (180 / Math.PI);

console.log(degree_angle)
let pointA={x:100,y:0};
设点b={x:20,y:20};
设pointC={x:0,y:100};
设distBA_x=pointB.x-pointA.x;
设distBA_y=pointB.y-pointA.y;
//设BA_a=Math.sqrt(distBA_x*distBA_x+distBA_y*distBA_y);
设distBC_x=pointB.x-pointC.x;
设distBC_y=pointB.y-pointC.y;
//设BC_c=Math.sqrt(distBC_x*distBC_x+distBC_y*distBC_y);
变量角度=数学atan2(distBA_x*distBC_y-distBA_y*distBC_x,distBA_x*distBC_x+distBA_y*distBC_y);
如果(角度<0){angle=angle*-1;}
var degree_angle=角度*(180/数学π);
控制台对数(度角)

我把它放在画布上,这样你就可以直观地看到它并更改参数。希望它能有所帮助。这是代码笔。我想我可以把你带到B的角度,但我的数学不是很好,而且会对所有这些变量感到迷茫。如果你一直在计算角度,试试这个,看看它是否符合你的要求。它似乎在做什么5是问,但仔细检查我的工作

let pointA = {x: 100, y: 0};
let pointB = {x: 20, y: 20};
let pointC = {x: 0, y: 100};

let distBA_x = pointB.x - pointA.x;
let distBA_y = pointB.y - pointA.y;
//let BA_a = Math.sqrt(distBA_x*distBA_x + distBA_y*distBA_y);

let distBC_x = pointB.x - pointC.x;
let distBC_y = pointB.y - pointC.y;
//let BC_c = Math.sqrt(distBC_x*distBC_x + distBC_y*distBC_y);

var angle = Math.atan2(distBA_x * distBC_y - distBA_y * distBC_x, distBA_x * distBC_x + distBA_y * distBC_y);
if(angle < 0) {angle = angle * -1;}
var degree_angle = angle * (180 / Math.PI);

console.log(degree_angle)
let pointA={x:100,y:0};
设点b={x:20,y:20};
设pointC={x:0,y:100};
设distBA_x=pointB.x-pointA.x;
设distBA_y=pointB.y-pointA.y;
//设BA_a=Math.sqrt(distBA_x*distBA_x+distBA_y*distBA_y);
设distBC_x=pointB.x-pointC.x;
设distBC_y=pointB.y-pointC.y;
//设BC_c=Math.sqrt(distBC_x*distBC_x+distBC_y*distBC_y);
变量角度=数学atan2(distBA_x*distBC_y-distBA_y*distBC_x,distBA_x*distBC_x+distBA_y*distBC_y);
如果(角度<0){angle=angle*-1;}
var degree_angle=角度*(180/数学π);
控制台对数(度角)

我把它放在画布上,这样你可以直观地看到它并更改参数。希望它能有所帮助。这里的代码笔是两个向量之间的“点积”。结果是一个数字:向量分量的乘积之和。如果向量是(x1,y1)和(x2,y2),点积是x1x2+y2

假设您没有用于向量计算的库,并且不想创建一个库,那么计算k的代码将是:

k = (-xb*(xc - xb)-yb*(yc - yb)) / ac

BA•BC
是两个向量之间的“点积”。结果是一个数字:向量分量的乘积之和。如果向量是(x1,y1)和(x2,y2),点积是x1x2+y1y2

假设您没有用于向量计算的库,并且不想创建一个库,那么计算k的代码将是:

k = (-xb*(xc - xb)-yb*(yc - yb)) / ac

抱歉耽搁了,我正忙着另一个项目