Расстояние между двумя параллельными плоскостями в 3-D
Вам даны две плоскости P1 : a1 * x + b1 * y + c1 * z + d1 = 0 и P2 : a2 * x + b2 * y + c2 * z + d2 = 0 . Задача - написать программу для определения расстояния между этими двумя плоскостями.
Примеры :
Ввод: a1 = 1, b1 = 2, c1 = -1, d1 = 1, a2 = 3, b2 = 6, c2 = -3, d2 = -4 Выход: расстояние 0,952579344416 Ввод: a1 = 1, b1 = 2, c1 = -1, d1 = 1, a2 = 1, b2 = 6, c2 = -3, d2 = -4 Вывод: плоскости не параллельны
Подход: Рассмотрим две плоскости, заданные уравнениями: -
P1 : a1 * x + b1 * y + c1 * z + d1 = 0, where a1, b1 and c1, d1 are real constants and
P2 : a2 * x + b2 * y + c2 * z + d2 = 0, where a2, b2 and c2, d2 are real constants.
Условие параллельности двух плоскостей:
=> a1 / a2 = b1 / b2 = c1 / c2
Найдите точку в любой одной плоскости, расстояние от которой до другой плоскости будет расстоянием между этими двумя плоскостями. Расстояние можно рассчитать по формулам:
Расстояние = (| a * x1 + b * y1 + c * z1 + d |) / (sqrt (a * a + b * b + c * c))
Пусть точка в плоскости P1 есть P (x1, y1, z1),
Положите x = y = 0 в уравнение a1 * x + b1 * y + c1 * z + d1 = 0 и найдите z.
=> z = -d1 / c1
Теперь у нас есть координаты P (0, 0, z) = P (x1, y1, z1).
Расстояние от точки P до плоскости P2 будет: -
Distance = (| a2*x1 + b2*y1 + c2*z1 + d2 |) / (sqrt( a2*a2 + b2*b2 + c2*c2))
= (| a2*0 + b2*0 + c2*z1 + d2 |) / (sqrt( a2*a2 + b2*b2 + c2*c2))
= (| c2*z1 + d2 |) / (sqrt( a2*a2 + b2*b2 + c2*c2))
Below is the implementation of the above formulae:
C++
// C++ program to find the Distance // between two parallel Planes in 3 D. #include <bits/stdc++.h> #include<math.h> using namespace std; // Function to find distance void distance( float a1, float b1, float c1, float d1, float a2, float b2, float c2, float d2) { float x1, y1, z1, d; if (a1 / a2 == b1 / b2 && b1 / b2 == c1 / c2) { x1 = y1 = 0; z1 = -d1 / c1; d = fabs (( c2 * z1 + d2)) / ( sqrt (a2 * a2 + b2 * b2 + c2 * c2)); cout << "Perpendicular distance is " << d << endl; } else cout << "Planes are not parallel" ; return ; } // Driver Code int main() { float a1 = 1; float b1 = 2; float c1 = -1; float d1 = 1; float a2 = 3; float b2 = 6; float c2 = -3; float d2 = -4; distance(a1, b1, c1, d1, a2, b2, c2, d2); // Fxn cal return 0; } // This code is contributed // by Akanksha Rai(Abby_akku) |
C
// C program to find the Distance between // two parallel Planes in 3 D. #include <stdio.h> #include<math.h> // Function to find distance void distance( float a1, float b1, float c1, float d1, float a2, float b2, float c2, float d2) { float x1,y1,z1,d; if (a1 / a2 == b1 / b2 && b1 / b2 == c1 / c2) { x1 = y1 = 0; z1 =-d1 / c1; d = fabs (( c2 * z1 + d2)) / ( sqrt (a2 * a2 + b2 * b2 + c2 * c2)); printf ( "Perpendicular distance is %f
" , d); } else printf ( "Planes are not parallel" ); return ; } // Driver Code int main() { float a1 = 1; float b1 = 2; float c1 = -1; float d1 = 1; float a2 = 3; float b2 = 6; float c2 = -3; float d2 = -4; distance(a1, b1, c1, d1, a2, b2, c2, d2); // Fxn cal return 0; } // This code is contributed // by Amber_Saxena. |
Java
// Java program to find the Distance // between two parallel Planes in 3 D. import java .io.*; import java.lang.Math; class GFG { // Function to find distance static void distance( float a1, float b1, float c1, float d1, float a2, float b2, float c2, float d2) { float x1,y1,z1,d; if (a1 / a2 == b1 / b2 && b1 / b2 == c1 / c2) { x1 = y1 = 0 ; z1 =-d1 / c1; d = Math.abs(( c2 * z1 + d2)) / ( float )(Math.sqrt(a2 * a2 + b2 * b2 + c2 * c2)); System.out.println( "Perpendicular distance is " + d); } else System.out.println( "Planes are not parallel" ); } // Driver code public static void main(String[] args) { float a1 = 1 ; float b1 = 2 ; float c1 = - 1 ; float d1 = 1 ; float a2 = 3 ; float b2 = 6 ; float c2 = - 3 ; float d2 = - 4 ; distance(a1, b1, c1, d1, a2, b2, c2, d2); // Fxn cal } } // This code is contributed // by Amber_Saxena. |
Python
# Python program to find the Distance between # two parallel Planes in 3 D. import math # Function to find distance def distance(a1, b1, c1, d1, a2, b2, c2, d2): if (a1 / a2 = = b1 / b2 and b1 / b2 = = c1 / c2): x1 = y1 = 0 z1 = - d1 / c1 d = abs (( c2 * z1 + d2)) / (math.sqrt(a2 * a2 + b2 * b2 + c2 * c2)) print ( "Perpendicular distance is" ), d else : print ( "Planes are not parallel" ) # Driver Code a1 = 1 b1 = 2 c1 = - 1 d1 = 1 a2 = 3 b2 = 6 c2 = - 3 d2 = - 4 distance(a1, b1, c1, d1, a2, b2, c2, d2) # Fxn cal |
C#
// C# program to find the Distance // between two parallel Planes in 3 D. using System; class GFG { // Function to find distance static void distance( float a1, float b1, float c1, float d1, float a2, float b2, float c2, float d2) { float z1, d; if (a1 / a2 == b1 / b2 && b1 / b2 == c1 / c2) { z1 =-d1 / c1; d = Math.Abs((c2 * z1 + d2)) / ( float )(Math.Sqrt(a2 * a2 + b2 * b2 + c2 * c2)); Console.Write( "Perpendicular distance is " + d); } else Console.Write( "Planes are not parallel" ); } // Driver code public static void Main() { float a1 = 1; float b1 = 2; float c1 = -1; float d1 = 1; float a2 = 3; float b2 = 6; float c2 = -3; float d2 = -4; distance(a1, b1, c1, d1, a2, b2, c2, d2); // Fxn cal } } // This code is contributed // by ChitraNayal |
PHP
<?php // PHP program to find the Distance // between two parallel Planes in 3 D // Function to find distance function distance( $a1 , $b1 , $c1 , $d1 , $a2 , $b2 , $c2 , $d2 ) { if ( $a1 / $a2 == $b1 / $b2 && $b1 / $b2 == $c1 / $c2 ) { $x1 = $y1 = 0; $z1 =- $d1 / $c1 ; $d = abs (( $c2 * $z1 + $d2 )) / (sqrt( $a2 * $a2 + $b2 * $b2 + $c2 * $c2 )); echo "Perpendicular distance is " , $d ; } else echo "Planes are not parallel" ; } // Driver Code $a1 = 1; $b1 = 2; $c1 = -1; $d1 = 1; $a2 = 3; $b2 = 6; $c2 = -3; $d2 = -4; distance( $a1 , $b1 , $c1 , $d1 , $a2 , $b2 , $c2 , $d2 ); // This code is contributed // by Amber_Saxena. ?> |
Javascript
<script> // Javascript program to find the Distance // between two parallel Planes in 3 D. // Function to find distance function distance(a1, b1, c1, d1, a2, b2, c2, d2) { let x1,y1,z1,d; if (a1 / a2 == b1 / b2 && b1 / b2 == c1 / c2) { x1 = y1 = 0; z1 =-d1 / c1; d = Math.abs(( c2 * z1 + d2)) / (Math.sqrt(a2 * a2 + b2 * b2 + c2 * c2)); document.write( "Perpendicular distance is " + d); } else document.write( "Planes are not parallel" ); } // Driver Code let a1 = 1; let b1 = 2; let c1 = -1; let d1 = 1; let a2 = 3; let b2 = 6; let c2 = -3; let d2 = -4; distance(a1, b1, c1, d1, a2, b2, c2, d2); // Fxn cal </script> |
Perpendicular distance is 0.952579344416
Вниманию читателя! Не прекращайте учиться сейчас. Освойте все важные концепции DSA с помощью самостоятельного курса DSA по приемлемой для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .
Если вы хотите посещать живые занятия с отраслевыми экспертами, пожалуйста, обращайтесь к Geeks Classes Live и Geeks Classes Live USA.