Section formula (Point that divides a line in given ratio)

18 Jun, 2022
Given two coordinates (x1, y1) and (x2, y2), and m and n, find the co-ordinates that divides the line joining (x1, y1) and (x2, y2) in the ratio m : n 
Examples:  
Input : x1 = 1, y1 = 0, x2 = 2 y2 = 5,
        m = 1, n = 1
Output : (1.5, 2.5)
Explanation: co-ordinates (1.5, 2.5)
divides the line in ratio 1 : 1

Input : x1 = 2, y1 = 4, x2 = 4, y2 = 6,
        m = 2, n = 3
Output : (2.8, 4.8)
Explanation: (2.8, 4.8) divides the line
in the ratio 2:3
 
The section formula tells us the coordinates of the point which divides a given line segment into two parts such that their lengths are in the ratio m : n 
 
C++
Java
Python
C#
PHP
Javascript
// CPP program to find point that divides// given line in given ratio.#include <iostream>using namespace std; // Function to find the section of the linevoid section(double x1, double x2, double y1,              double y2, double m, double n){    // Applying section formula    double x = ((n * x1) + (m * x2)) /                            (m + n);    double y = ((n * y1) + (m * y2)) /                             (m + n);     // Printing result    cout << "(" << x << ", ";    cout << y << ")" << endl;} // Driver codeint main(){    double x1 = 2, x2 = 4, y1 = 4,           y2 = 6, m = 2, n = 3;    section(x1, x2, y1, y2, m, n);    return 0;}
// Java program to find point that divides// given line in given ratio.import java.io.*; class sections {    static void section(double x1, double x2,                        double y1, double y2,                        double m, double n)    {        // Applying section formula        double x = ((n * x1) + (m * x2)) /                    (m + n);        double y = ((n * y1) + (m * y2)) /                    (m + n);          // Printing result        System.out.println("(" + x + ", " + y + ")");    }     public static void main(String[] args)    {        double x1 = 2, x2 = 4, y1 = 4,               y2 = 6, m = 2, n = 3;        section(x1, x2, y1, y2, m, n);    }}
# Python program to find point that divides# given line in given ratio.def section(x1, x2, y1, y2, m, n):     # Applying section formula    x = (float)((n * x1)+(m * x2))/(m + n)    y = (float)((n * y1)+(m * y2))/(m + n)     # Printing result    print (x, y) x1 = 2x2 = 4y1 = 4y2 = 6m = 2n = 3section(x1, x2, y1, y2, m, n)
// C# program to find point that divides// given line in given ratio.using System; class GFG {         static void section(double x1, double x2,                        double y1, double y2,                          double m, double n)    {                 // Applying section formula        double x = ((n * x1) + (m * x2)) /                                    (m + n);                                             double y = ((n * y1) + (m * y2)) /                                   (m + n);         // Printing result        Console.WriteLine("(" + x + ", " + y + ")");    }     // Driver code    public static void Main()    {                 double x1 = 2, x2 = 4, y1 = 4,                y2 = 6, m = 2, n = 3;                         section(x1, x2, y1, y2, m, n);    }} // This code is contributed by vt_m.
<?php// PHP program to find point that// divides given line in given ratio. // Function to find the// section of the linefunction section($x1, $x2, $y1,                 $y2, $m, $n){         // Applying section formula    $x = (($n * $x1) + ($m * $x2))                     / ($m + $n);                                 $y = (($n * $y1) + ($m * $y2))                     / ($m + $n);     // Printing result    echo("(" . $x . ", ");    echo($y . ")");} // Driver code$x1 = 2; $x2 = 4; $y1 = 4;$y2 = 6; $m = 2; $n = 3;section($x1, $x2, $y1, $y2, $m, $n);     // This code is contributed by Ajit.?>
<script> // JavaScript program to find point that divides// given line in given ratio     function section(x1, x2, y1, y2, m, n)    {        // Applying section formula        let x = ((n * x1) + (m * x2)) /                    (m + n);        let y = ((n * y1) + (m * y2)) /                    (m + n);              // Printing result        document.write("(" + x + ", " + y + ")");    } // Driver Code         let x1 = 2, x2 = 4, y1 = 4,               y2 = 6, m = 2, n = 3;        section(x1, x2, y1, y2, m, n)               // This code is contributed by avijitmondal1998.</script>
Output:  
(2.8, 4.8)
Time Complexity: O(1) Auxiliary Space: O(1)
How does this work?  
 
From our diagram, we can see,
PS = x – x1 and RT = x2 – x

We are given,

PR/QR = m/n

Using similarity, we can write
RS/QT = PS/RT = PR/QR

Therefore, we can write
 PS/RR = m/n
 (x - x1) / (x2 - x) = m/n

From above, we get
  x = (mx2 + nx1) / (m + n)

Similarly, we can solve for y.
References: http://doubleroot.in/lessons/coordinate-geometry-basics/section-formula/#.WjYXQvbhU8o 
jit_t
avijitmondal1998
ManasChhabra2
_shinchancode
Algebra
Geometric
Mathematical
Mathematical
Geometric
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Program for distance between two points on earth
Optimum location of point to minimize total distance
Check if two given circles touch or intersect each other
Check whether a given point lies inside a triangle or not
Convex Hull | Set 1 (Jarvis's Algorithm or Wrapping)
Program for Fibonacci numbers
Set in C++ Standard Template Library (STL)
C++ Data Types
Write a program to print all permutations of a given string
Merge two sorted arrays