截面公式(按给定比例分割一条直线的点)

给定两个坐标(x1,y1)和(x2,y2),以及m和n,求出将连接线(x1,y1)和(x2,y2)以m:n的比率分开的坐标

null

Section formula problems

例如:

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

截面公式告诉我们将给定线段分成两部分的点的坐标,其长度为m:n

Section formula

C++

// CPP program to find point that divides
// given line in given ratio.
#include <iostream>
using namespace std;
// Function to find the section of the line
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
cout << "(" << x << ", " ;
cout << y << ")" << endl;
}
// Driver code
int main()
{
double x1 = 2, x2 = 4, y1 = 4,
y2 = 6, m = 2, n = 3;
section(x1, x2, y1, y2, m, n);
return 0;
}


JAVA

// 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

# 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 = 2
x2 = 4
y1 = 4
y2 = 6
m = 2
n = 3
section(x1, x2, y1, y2, m, n)


C#

// 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
// PHP program to find point that
// divides given line in given ratio.
// Function to find the
// section of the line
function 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.
?>


Javascript

<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>


输出:

(2.8, 4.8)

这是怎么回事?

Section formula working

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.

参考资料: http://doubleroot.in/lessons/coordinate-geometry-basics/section-formula/#.WjYXQvbhU8o

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享