Given two points coordinates **(x _{1}, y_{1})** and

**(x**on 2D plane. The task is to find the reflection of (x

_{2}, y_{2})_{1}, y

_{1}) at 180 degree rotation of (x

_{2}, y

_{2}).

Examples:

Input : x_{1}= 0, y_{1}= 0, x_{2}= 1, y_{2}= 1 Output : (2, 2) Input : x_{1}= 1, y_{1}= 1, x_{2}= 2, y_{2}= 2 Output : (3, 3)

Let the reflection point of point (x_{1}, y_{1}) about (x_{2}, y_{2}) be (x’, y’).

For (x’, y’) be the 180 degree rotation of point (x_{1}, y_{1}) around point (x_{2}, y_{2}), they all must be collinear i.e all the three point must lie on a same straight line. Also, observe (x_{2}, y_{2}) will became mid point between (x_{1}, y_{1}) and (x’, y’).

So,

x’ – x_{2} = x_{2} – x_{1}

y’ – y_{2} = y_{2} – y_{1}

x’ = 2 * x_{2} – x_{1}

y’ = 2 * y_{2} – y_{1}

Below is the implementation of this approach:

## C++

[sourcecode language=”CPP”]

// CPP Program tof find the 180 degree reflection

// of one point around another point.

#include <bits/stdc++.h>

using namespace std;

void findPoint(int x1, int y1, int x2, int y2)

{

cout << "(" << 2 * x2 – x1 << ", "

<< 2 * y2 – y1 << ")";

}

int main()

{

int x1 = 0, y1 = 0, x2 = 1, y2 = 1;

findPoint(x1, y1, x2, y2);

return 0;

}

[/sourcecode]

## Java

[sourcecode language=”Java”]

// Java Program to find the 180 degree

// reflection of one point around

// another point.

class GFG {

static void findPoint(int x1, int y1,

int x2, int y2)

{

System.out.println("(" + (int)(2 * x2 – x1)

+ "," + (int)(2 * y2 – y1 ) + " )");

}

// Driver code

public static void main(String args[])

{

int x1 = 0, y1 = 0, x2 = 1, y2 = 1;

findPoint(x1, y1, x2, y2);

}

}

// This code is contributed by Arnab Kundu.

[/sourcecode]

## C#

[sourcecode language=”csharp”]

// C# Program to find the 180 degree reflection

// of one point around another point.

using System;

public class GFG {

static void findPoint(int x1, int y1,

int x2, int y2)

{

Console.WriteLine("(" + (int)(2 * x2 – x1)

+ "," + (int)(2 * y2 – y1 ) + " )");

}

// Driver code

static public void Main(String []args)

{

int x1 = 0, y1 = 0, x2 = 1, y2 = 1;

findPoint(x1, y1, x2, y2);

}

}

// This code is contributed by Arnab Kundu.

[/sourcecode]

## PHP

[sourcecode language=”php”]

<?php

// PHP Program for find the 180

// degree reflection of one point

// around another point.

function findPoint($x1, $y1, $x2, $y2)

{

echo "(" , 2 * $x2 – $x1 , ", "

, 2 * $y2 – $y1 ,")";

}

// Driver Code

$x1 = 0;

$y1 = 0;

$x2 = 1;

$y2 = 1;

findPoint($x1, $y1, $x2, $y2);

// This code is contributed by anuj_67

?>

[/sourcecode]

**Output:**

(2, 2)

**Time Complexity : **O(1)

## Recommended Posts:

- Reflection of a point about a line in C++
- Rotation of a point about another point in C++
- Mirror of a point through a 3 D plane
- Distance between a point and a Plane in 3 D
- Triangle with no point inside
- First collision point of two series
- Find the other end point of a line with given one end and mid
- Check whether given floating point number is even or odd
- Finding the best fit rectangle that covers a given point
- Direction of a Point from a Line Segment
- Program to find the mid-point of a line
- Check if a point is inside, outside or on the parabola
- Find normal at a given point on the curve
- Find Tangent at a given point on the curve
- Program to find the Break Even Point

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.