首页 > 编程语言 >JavaScript 程序寻找通过 2 个点的线(Program to find line passing through 2 Points)

JavaScript 程序寻找通过 2 个点的线(Program to find line passing through 2 Points)

时间:2024-08-28 10:27:04浏览次数:9  
标签:直线 方程 个点 截距 JavaScript var Points y1 ax

          在数学和计算机科学中,找到通过两个点的线的方程是一个基础问题。假设我们有两个点 P1​(x1​,y1​) 和 P2​(x2​,y2​),我们想要找到通过这两个点的直线方程。

直线方程的形式

直线的方程通常表示为 y=mx+b,其中 m 是斜率,b 是 y 轴截距。

计算斜率 m

斜率 m 可以通过以下公式计算:

m=x2​−x1​y2​−y1​​

计算 y 轴截距 b

一旦我们有了斜率 m,我们就可以通过代入一个点的坐标来找到 y 轴截距 b。使用点 P1​(x1​,y1​):

y1​=mx1​+b

解这个方程以找到 b:

b=y1​−mx1​

示例

假设我们有两个点 P1​(2,3) 和 P2​(4,7)。

  1. 计算斜率 m:

m=4−27−3​=24​=2

  1. 计算 y 轴截距 b:

b=3−2×2=3−4=−1

  1. 因此,通过点 P1​ 和 P2​ 的直线方程是:

y=2x−1

下面举例一些示例图片: 

给定坐标平面中的两个点 P 和 Q,求出通过这两个点的直线方程。
这种转换在许多几何算法中非常有用,例如直线交点、求三角形的外心、求三角形的内心等等……

例子: 

输入:P(3, 2) 
        Q(2, 6)
输出:4x + 1y = 14

输入:P(0, 1) 
        Q(2, 4)
输出:3x + -2y = -2

假设给定的两个点分别为 P(x 1 , y 1 ) 和 Q(x 2 , y 2 )。现在,我们找到由这些点形成的直线方程。
任何直线都可以表示为, 
ax + by = c 

假设这两个点满足给定的直线。因此,我们有, 
ax 1 + by 1 = c 
ax 2 + by 2 = c 

我们可以设置以下值,使得所有方程成立,  

a = y 2 - y 1 
b = x 1 - x 2 
c = ax 1 + by 1

这些可以通过首先直接获得斜率,然后找到直线的截距来推导。或者也可以通过以下简单的观察巧妙地推导这些:

推导: 

ax 1 + by 1 = c ...(i) 
ax 2 + by 2 = c ...(ii)
使 (i) 和 (ii) 相等,
ax 1 + by 1 = ax 2 + by 2 
=> a(x 1 - x 2 ) = b(y 2 - y 1 )

因此,为了使 LHS 和 RHS 相等,我们可以简单地得到,
a = (y 2 - y 1 ) 
AND 
b = (x 1 - x 2 )
从而得到,
(y 2 - y 1 )(x 1 - x 2 ) = (x 1 - x 2 )(y 2 - y 1 ) 
AND

将这些值放入 (i) 中,我们得到,
c = ax 1 + by 1 
因此,我们现在有了 a、b 和 c 的值,这意味着我们在坐标平面上有一条线。

编程实现: 

// Javascript implementation to find the 
// line passing through two points
 
// Function to find the line given two points
function lineFromPoints(P, Q)
{
    var a = Q[1] - P[1]
    var b = P[0] - Q[0]
    var c = a*(P[0]) + b*(P[1])
 
    if (b < 0)
        document.write("The line passing through " +
                       "points P and Q is:  " + a + 
                       "x - " + b + "y = " + c + "<br>")
    else
        document.write("The line passing through " + 
                       "points P and Q is:  "+ a +  
                       "x + " + b + "y = " + c + "<br>")
}
 
// Driver code
var P = [ 3, 2 ]
var Q = [ 2, 6 ]
 
lineFromPoints(P, Q)
 
// This code is contributed by akshitsaxenaa09 

输出

经过点 P 和 Q 的直线为:4x + 1y = 14

时间复杂度: O(1)

辅助空间: O(1),因为没有占用额外的空间。

标签:直线,方程,个点,截距,JavaScript,var,Points,y1,ax
From: https://blog.csdn.net/hefeng_aspnet/article/details/141058023

相关文章

  • C# 程序寻找通过 2 个点的线(Program to find line passing through 2 Points)
              在数学和计算机科学中,找到通过两个点的线的方程是一个基础问题。假设我们有两个点 P1​(x1​,y1​) 和 P2​(x2​,y2​),我们想要找到通过这两个点的直线方程。直线方程的形式直线的方程通常表示为 y=mx+b,其中 m 是斜率,b 是 y 轴截距。计算斜率......
  • JavaScript 对象构造器
    <!DOCTYPEhtml><htmllang="en"><body><pid="demo"></p><script>functionPerson(first,last,age,like){this.firstName=first;this.lastName=last;......
  • [1050] Website endpoints in AWS
    ref:WebsiteendpointsWebsiteendpointexamplesThefollowingexamplesshowhowyoucanaccessanAmazonS3bucketthatisconfiguredasastaticwebsite.Example—RequestinganobjectattherootlevelTorequestaspecificobjectthatisstored......
  • JavaScript简介
    一、JavaScript简介1.什么是JavaScript?JavaScript简称为JS,由网景公司开发的客户端脚本语言,不需要编译,可以直接运行Web前端三层:结构层 HTML 定义页面的结构样式层 CSS 定义页面的样式行为层 JavaScript 用来实现交互,提升用户体验2.JavaScript作用在客户端动......
  • JavaScript 的事件循环、宏任务、微任务
    JavaScrtipt执行顺序首先,必须要明确,在JavaScript中,所有任务都在主线程上执行。任务执行过程分为同步任务和异步任务两个阶段。异步任务的处理经历两个主要阶段:EventTable(事件表)和EventQueue(事件队列)。EventTable存储了宏任务的相关信息,包括事件监听和相应的回调函数。当特定......
  • javascript怎么实现链表?
    在JavaScript中实现链表通常涉及定义一个链表节点类(通常称为ListNode)和一个链表类(例如LinkedList),然后在这个链表类中实现各种操作链表的方法,如添加节点、删除节点、遍历链表等。以下是使用JavaScript实现单向链表的一个基本示例:链表节点类(ListNode)首先,我们定义一个链表节点......
  • 【JavaScript】String常用方法
    String的常用方法长度s.length拼接字符串s.concat('内容','可拼接多个'),或者使用+号链接符,返回一个新字符串位置查找字符串方法;返回字符​查找某位置上的字符s.charAt(下标)返回该下标位置上的字符,未找到返回空白​返回某位置上的字符s[下标](只读,不能赋值),不支......
  • JavaScript 对象访问器
    JavaScript访问器(Getter和Setter)Getter和Setter允许您定义对象访问器(被计算的属性)。<!DOCTYPEhtml><htmllang="en"><body><pid="demo"></p><script>constperson={nama:"DianDi......
  • [javascript] 使用 puppeteer 包模拟 chrome 自动化
    npmipuppeteerconstpuppeteer=require('puppeteer');functionsleep(ms){returnnewPromise(resolve=>setTimeout(resolve,ms));}asyncfunctionrun(){constbrowser=awaitpuppeteer.launch({headless:false,args:['--st......
  • Javascript之函数式编程
    一、是什么函数式编程是一种"编程范式"(programmingparadigm),一种编写程序的方法论主要的编程范式有三种:命令式编程,声明式编程和函数式编程相比命令式编程,函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算......