En este artículo, se explica cómo encontrar las intersecciones X, Y y Z de un avión. Hay dos formas de encontrar las intersecciones:
Caso 1: Cuando se da la ecuación general del plano.
Ejemplos:
Input: A = -6, B = 5, C = -3, D = 9 Output: 1.5 -1.8 3.0
Input: A = 7, B = 4, C = 5, D = -7 Output: 1.0 1.75 1.4
Acercarse:
El resultado se puede calcular siguiendo los siguientes pasos:
- Convertir ecuación general de un plano Ax + By + Cz + D = 0 a Ax + By + Cz = – D
- Dividir por -D en ambos lados de la ecuación
- Entonces, la ecuación se convierte en x/(-D/A) + y/(-D/B) + z(-D/C) = 1
- La ecuación anterior está en la forma de intersección de un plano. Por lo tanto,
las intersecciones en X serán = -D/A Las
intersecciones en Y serán = -D/B
Las intersecciones en Z serán = -D/C
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to find the // X, Y and Z intercepts of a plane #include<iostream> using namespace std; float * XandYandZintercept(float A, float B, float C, float D) { static float rslt[3]; // For finding the x-intercept // put y = 0 and z = 0 float x = -D / A ; // For finding the y-intercept // put x = 0 and z = 0 float y = -D / B ; // For finding the z-intercept // put x = 0 and y = 0 float z = -D / C ; rslt[0] = x; rslt[1] = y; rslt[2] = z; return rslt; } // Driver code int main () { int A = 2 ; int B = 5 ; int C = 7; int D = 8 ; float *rslt = XandYandZintercept(A, B, C, D); for(int i = 0; i < 3 ; i++) { cout << rslt[i] << " "; } } // This code is contributed by ANKITKUMAR34
Java
// Java program to find the // X, Y and Z intercepts of a plane class GFG { static float[] XandYandZintercept(float A, float B, float C, float D) { float rslt[] = new float[3]; // For finding the x-intercept // put y = 0 and z = 0 float x = -D / A ; // For finding the y-intercept // put x = 0 and z = 0 float y = -D / B ; // For finding the z-intercept // put x = 0 and y = 0 float z = -D / C ; rslt[0] = x; rslt[1] = y; rslt[2] = z; return rslt; } // Driver code public static void main (String[] args) { int A = 2 ; int B = 5 ; int C = 7; int D = 8 ; float rslt[] = XandYandZintercept(A, B, C, D); for(int i = 0; i < 3 ; i++) { System.out.print(rslt[i] + " "); } } } // This code is contributed by AnkitRai01
Python3
# Python program to find the # X, Y and Z intercepts of a plane def XandYandZintercept(A, B, C, D): # For finding the x-intercept # put y = 0 and z = 0 x = -D / A # For finding the y-intercept # put x = 0 and z = 0 y = -D / B # For finding the z-intercept # put x = 0 and y = 0 z = -D / C return [x, y, z] # Driver code A = 2 B = 5 C = 7 D = 8 print(XandYandZintercept(A, B, C, D))
C#
// C# program to find the // X, Y and Z intercepts of a plane using System; class GFG { static float[] XandYandZintercept(float A, float B, float C, float D) { float []rslt = new float[3]; // For finding the x-intercept // put y = 0 and z = 0 float x = -D / A ; // For finding the y-intercept // put x = 0 and z = 0 float y = -D / B ; // For finding the z-intercept // put x = 0 and y = 0 float z = -D / C ; rslt[0] = x; rslt[1] = y; rslt[2] = z; return rslt; } // Driver code public static void Main() { int A = 2 ; int B = 5 ; int C = 7; int D = 8 ; float []rslt = XandYandZintercept(A, B, C, D); for(int i = 0; i < 3 ; i++) { Console.Write(rslt[i] + " "); } } } // This code is contributed by AnkitRai01
Javascript
<script> // JavaScript program to find the // X, Y and Z intercepts of a plane function XandYandZintercept(A, B, C, D) { // For finding the x-intercept // put y = 0 and z = 0 var x = -D / A; // For finding the y-intercept // put x = 0 and z = 0 var y = -D / B; // For finding the z-intercept // put x = 0 and y = 0 var z = -D / C; return [x, y, z]; } function equation_plane(p, q, r) { var x1 = p[0]; var y1 = p[1]; var z1 = p[2]; var x2 = q[0]; var y2 = q[1]; var z2 = q[2]; var x3 = r[0]; var y3 = r[1]; var z3 = r[2]; // For Finding value of A, B, C, D var a1 = x2 - x1; var b1 = y2 - y1; var c1 = z2 - z1; var a2 = x3 - x1; var b2 = y3 - y1; var c2 = z3 - z1; var A = b1 * c2 - b2 * c1; var B = a2 * c1 - a1 * c2; var C = a1 * b2 - b1 * a2; var D = -A * x1 - B * y1 - C * z1; // Calling the first created function var [x, y, z] = XandYandZintercept(A, B, C, D); document.write(x + " " + y + " " + z); } // Driver Code var x1 = -1; var y1 = 2; var z1 = 1; var x2 = 0; var y2 = -3; var z2 = 2; var x3 = 1; var y3 = 1; var z3 = -4; var p = [x1, y1, z1]; var q = [x2, y2, z2]; var r = [x3, y3, z3]; equation_plane(p, q, r); </script>
Producción:
[-4.0, -1.6, -1.1428571428571428]
Complejidad de tiempo: O(1)
Espacio Auxiliar: O(1)
Caso 2: Cuando se dan 3 puntos no colineales.
Ejemplos:
Input: A = (3, 17, 2), B = (4, 8, 5), C = (1, 8, 3) Output: 1.5 -1.8 3.0
Input: A = (2, 11, 4), B = (7, 8, 3), C = (9, 18, 23) Output: 1.0 1.75 1.4
Acercarse:
La idea es encontrar la forma cartesiana de la ecuación usando tres puntos.
- Cuando se dan tres puntos (x1, y1, z1), (x2, y2, z2), (x3, y3, z3), el valor determinante de la siguiente array da la forma cartesiana.
- | (x – x1) (y – y1) (z – z1) |
| (x2 – x1) (y2 – y1) (z2 – z1)| = 0
| (x3 – x1) (y3 – y1) (z3 – z1)| - Una vez que se encuentra el determinante anterior, las intersecciones se pueden encontrar utilizando el primer enfoque mencionado.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to find the // X, Y and Z intercepts of a plane #include<bits/stdc++.h> using namespace std; float * XandYandZintercept( float A, float B, float C, float D) { static float rslt[3]; // For finding the x-intercept // put y = 0 and z = 0 float x = -D / A; // For finding the y-intercept // put x = 0 and z = 0 float y = -D / B ; // For finding the z-intercept // put x = 0 and y = 0 float z = -D / C; rslt[0] = x; rslt[1] = y; rslt[2] = z; return rslt; } void equation_plane(int p[], int q[], int r[]) { int x1 = p[0]; int y1 = p[1]; int z1 = p[2]; int x2 = q[0]; int y2 = q[1]; int z2 = q[2]; int x3 = r[0]; int y3 = r[1]; int z3 = r[2]; // For Finding value of A, B, C, D int a1 = x2 - x1; int b1 = y2 - y1; int c1 = z2 - z1; int a2 = x3 - x1; int b2 = y3 - y1; int c2 = z3 - z1; int A = b1 * c2 - b2 * c1; int B = a2 * c1 - a1 * c2; int C = a1 * b2 - b1 * a2; int D = (- A * x1 - B * y1 - C * z1); // Calling the first created function float * rslt=XandYandZintercept(A, B, C, D); for(int i = 0; i < 3; i++) { cout << rslt[i] << " "; } } // Driver Code int main() { int x1 =-1; int y1 = 2; int z1 = 1; int x2 = 0; int y2 =-3; int z2 = 2; int x3 = 1; int y3 = 1; int z3 =-4; int p[3] = {x1, y1, z1}; int q[3] = {x2, y2, z2}; int r[3] = {x3, y3, z3}; equation_plane(p, q, r); } // This code is contributed by chitranayal
Java
// Java program to find the // X, Y and Z intercepts of a plane import java.util.*; class solution{ static double[] XandYandZintercept( double A, double B, double C, double D) { double []rslt = new double[3]; // For finding the x-intercept // put y = 0 and z = 0 double x = -D / A; // For finding the y-intercept // put x = 0 and z = 0 double y = -D / B ; // For finding the z-intercept // put x = 0 and y = 0 double z = -D / C; rslt[0] = x; rslt[1] = y; rslt[2] = z; return rslt; } static void equation_plane(int []p, int []q, int []r) { int x1 = p[0]; int y1 = p[1]; int z1 = p[2]; int x2 = q[0]; int y2 = q[1]; int z2 = q[2]; int x3 = r[0]; int y3 = r[1]; int z3 = r[2]; // For Finding value of A, B, C, D int a1 = x2 - x1; int b1 = y2 - y1; int c1 = z2 - z1; int a2 = x3 - x1; int b2 = y3 - y1; int c2 = z3 - z1; int A = b1 * c2 - b2 * c1; int B = a2 * c1 - a1 * c2; int C = a1 * b2 - b1 * a2; int D = (- A * x1 - B * y1 - C * z1); // Calling the first created function double []rslt = XandYandZintercept(A, B, C, D); for(int i = 0; i < 3; i++) { System.out.printf(rslt[i]+" "); } } // Driver Code public static void main(String args[]) { int x1 =-1; int y1 = 2; int z1 = 1; int x2 = 0; int y2 =-3; int z2 = 2; int x3 = 1; int y3 = 1; int z3 =-4; int []p = {x1, y1, z1}; int []q = {x2, y2, z2}; int []r = {x3, y3, z3}; equation_plane(p, q, r); } } // This code is contributed by Surendra_Gangwar
Python3
# Python program to find the # X, Y and Z intercepts of a plane def XandYandZintercept(A, B, C, D): # For finding the x-intercept # put y = 0 and z = 0 x = -D / A # For finding the y-intercept # put x = 0 and z = 0 y = -D / B # For finding the z-intercept # put x = 0 and y = 0 z = -D / C return [x, y, z] def equation_plane(p, q, r): x1 = p[0] y1 = p[1] z1 = p[2] x2 = q[0] y2 = q[1] z2 = q[2] x3 = r[0] y3 = r[1] z3 = r[2] # For Finding value of A, B, C, D a1 = x2 - x1 b1 = y2 - y1 c1 = z2 - z1 a2 = x3 - x1 b2 = y3 - y1 c2 = z3 - z1 A = b1 * c2 - b2 * c1 B = a2 * c1 - a1 * c2 C = a1 * b2 - b1 * a2 D = (- A * x1 - B * y1 - C * z1) # Calling the first created function print(XandYandZintercept(A, B, C, D)) # Driver Code x1 =-1 y1 = 2 z1 = 1 x2 = 0 y2 =-3 z2 = 2 x3 = 1 y3 = 1 z3 =-4 equation_plane((x1, y1, z1), (x2, y2, z2), (x3, y3, z3))
C#
// C# program to find the // X, Y and Z intercepts of a plane using System; class GFG{ static double[] XandYandZintercept(double A, double B, double C, double D) { double[] rslt = new double[3]; // For finding the x-intercept // put y = 0 and z = 0 double x = -D / A; // For finding the y-intercept // put x = 0 and z = 0 double y = -D / B ; // For finding the z-intercept // put x = 0 and y = 0 double z = -D / C; rslt[0] = x; rslt[1] = y; rslt[2] = z; return rslt; } static void equation_plane(int[] p, int[] q, int[] r) { int x1 = p[0]; int y1 = p[1]; int z1 = p[2]; int x2 = q[0]; int y2 = q[1]; int z2 = q[2]; int x3 = r[0]; int y3 = r[1]; int z3 = r[2]; // For Finding value // of A, B, C, D int a1 = x2 - x1; int b1 = y2 - y1; int c1 = z2 - z1; int a2 = x3 - x1; int b2 = y3 - y1; int c2 = z3 - z1; int A = (b1 * c2 - b2 * c1); int B = (a2 * c1 - a1 * c2); int C = (a1 * b2 - b1 * a2); int D = (- A * x1 - B * y1 - C * z1); // Calling the first // created function double[] rslt = XandYandZintercept(A, B, C, D); for(int i = 0; i < 3; i++) { Console.Write(rslt[i] + " "); } } // Driver code static void Main() { int x1 =-1; int y1 = 2; int z1 = 1; int x2 = 0; int y2 =-3; int z2 = 2; int x3 = 1; int y3 = 1; int z3 =-4; int[] p = {x1, y1, z1}; int[] q = {x2, y2, z2}; int[] r = {x3, y3, z3}; equation_plane(p, q, r); } } // This code is contributed by divyeshrabadiya07
Javascript
<script> // Javascript program to find the // X, Y and Z intercepts of a plane function XandYandZintercept(A, B, C, D) { let rslt = new Array(3); // For finding the x-intercept // put y = 0 and z = 0 let x = -D / A; // For finding the y-intercept // put x = 0 and z = 0 let y = -D / B ; // For finding the z-intercept // put x = 0 and y = 0 let z = -D / C; rslt[0] = x; rslt[1] = y; rslt[2] = z; return rslt; } function equation_plane(p, q, r) { let x1 = p[0]; let y1 = p[1]; let z1 = p[2]; let x2 = q[0]; let y2 = q[1]; let z2 = q[2]; let x3 = r[0]; let y3 = r[1]; let z3 = r[2]; // For Finding value of A, B, C, D let a1 = x2 - x1; let b1 = y2 - y1; let c1 = z2 - z1; let a2 = x3 - x1; let b2 = y3 - y1; let c2 = z3 - z1; let A = b1 * c2 - b2 * c1; let B = a2 * c1 - a1 * c2; let C = a1 * b2 - b1 * a2; let D = (- A * x1 - B * y1 - C * z1); // Calling the first created function let rslt = XandYandZintercept(A, B, C, D); for(let i = 0; i < 3; i++) { document.write(rslt[i] + " "); } } // Driver Code let x1 = -1; let y1 = 2; let z1 = 1; let x2 = 0; let y2 = -3; let z2 = 2; let x3 = 1; let y3 = 1; let z3 = -4; let p = [ x1, y1, z1 ]; let q = [ x2, y2, z2 ]; let r = [ x3, y3, z3 ]; equation_plane(p, q, r); // This code is contributed by rag2127 </script>
Producción:
[-0.11538461538461539, -0.42857142857142855, -0.3333333333333333]
Complejidad de tiempo: O(1), Complejidad de espacio: O(1)
Publicación traducida automáticamente
Artículo escrito por Atul_kumar_Shrivastava y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA