Dado un punto (x1, y1, z1) en 3D y los coeficientes de la ecuación del plano, tenemos que encontrar el pie de la perpendicular de un punto en un plano 3D.
Ejemplos:
Entrada: a = 1, b = -2, c = 0, d = 0, x = -1, y = 3, z = 4
Salida: x2 = 0,4 y2 = 0,2 z2 = 4,0
Entrada: a = 2, b = -1, c = 1, d = 3, x = 1, y = 3, z = 4
Salida: x2 = -1,0 y2 = 4,0 z2 = 3,0
Enfoque: La ecuación del plano se da como ax + by + cz + d = 0. Por lo tanto, las relaciones de dirección de la normal al plano son (a, b, c) . Sea N el pie de la perpendicular desde el punto dado al plano dado, entonces, la línea PN tiene razones dirigidas (a, b, c) y pasa por P(x1, y1, z1).
La ecuación de la línea PN será como: –
(x – x1) / a = (y – y1) / b = (z – z1) / c = k
Por lo tanto, cualquier punto en la línea PN se puede escribir como: –
x = un * k + x1
y = segundo * k + y1
z = c * k + z1
dado que N se encuentra tanto en la línea como en el plano, satisfará (ax + by + cz + d = 0).
=>a * (a * k + x1) + b * (b * k + y1) + c * (c * k + z1) + d = 0.
=>a * a * k + a * x1 + b * b * k + b * y1 + c * c * k + c * z1 + d = 0.
=>(a * a + b * b + c * c)k = -a * x1 – b * y1 – c * z1-d.
=>k = (-a * x1 – b * y1 – c * z1 – d) / (a * a + b * b + c * c).
Ahora, las coordenadas del Punto N en términos de k serán:
x2 = a * k + x1
y2 = segundo * k + y1
z2 = c * k + z1
A continuación se muestra la implementación de lo anterior:
C++
// C++ program to find // foot of perpendicular // of a point in a 3 D plane. #include <bits/stdc++.h> #include <iomanip> #include <iostream> #include <math.h> using namespace std; // Function to find foot of perpendicular void foot(float a, float b, float c, float d, float x1, float y1, float z1) { float k = (-a * x1 - b * y1 - c * z1 - d) / (float)(a * a + b * b + c * c); float x2 = a * k + x1; float y2 = b * k + y1; float z2 = c * k + z1; std::cout << std::fixed; std::cout << std::setprecision(1); cout << " x2 = " << x2; cout << " y2 = " << y2; cout << " z2 = " << z2; } // Driver Code int main() { float a = 1; float b = -2; float c = 0; float d = 0; float x1 = -1; float y1 = 3; float z1 = 4; // function call foot(a, b, c, d, x1, y1, z1); return 0; } // This code is contributed by Amber_Saxena.
Java
// Java program to find // foot of perpendicular // of a point in a 3 D plane. import java.util.*; import java.text.*; class solution { // Function to find foot of perpendicular static void foot(float a, float b, float c, float d, float x1, float y1, float z1) { float k = (-a * x1 - b * y1 - c * z1 - d) / (float)(a * a + b * b + c * c); float x2 = a * k + x1; float y2 = b * k + y1; float z2 = c * k + z1; DecimalFormat form = new DecimalFormat("0.0"); System.out.print(" x2 = " +form.format(x2)); System.out.print(" y2 = " +form.format(y2)); System.out.print( " z2 = " +form.format(z2)); } // Driver Code public static void main(String arr[]) { float a = 1; float b = -2; float c = 0; float d = 0; float x1 = -1; float y1 = 3; float z1 = 4; // function call foot(a, b, c, d, x1, y1, z1); } }
Python3
# Python3 program to find # foot of perpendicular # of a point in a 3 D plane. # Function to find foot of perpendicular def foot(a, b, c, d, x1, y1, z1) : k = (-a * x1 - b * y1 - c * z1 - d) / (a * a + b * b + c * c); x2 = a * k + x1; y2 = b * k + y1; z2 = c * k + z1; print("x2 =",round(x2,1)) print("y2 =",round(y2,1)) print("z2 =",round(z2,1)) # Driver Code if __name__ == "__main__" : a = 1 b = -2 c = 0 d = 0 x1 = -1 y1 = 3 z1 = 4 # function call foot(a, b, c, d, x1, y1, z1) # This code is contributed by Ryuga
C#
// C# program to find // foot of perpendicular // of a point in a 3 D plane. using System; using System.Globalization; class GFG { // Function to find foot of perpendicular static void foot(float a, float b, float c, float d, float x1, float y1, float z1) { float k = (-a * x1 - b * y1 - c * z1 - d) / (float)(a * a + b * b + c * c); float x2 = a * k + x1; float y2 = b * k + y1; float z2 = c * k + z1; NumberFormatInfo form = new NumberFormatInfo(); form.NumberDecimalSeparator = "."; Console.Write(" x2 = " + x2.ToString(form)); Console.Write(" y2 = " + y2.ToString(form)); Console.Write( " z2 = " + z2.ToString(form)); } // Driver Code public static void Main(String []arr) { float a = 1; float b = -2; float c = 0; float d = 0; float x1 = -1; float y1 = 3; float z1 = 4; // function call foot(a, b, c, d, x1, y1, z1); } } // This code contributed by Rajput-Ji
PHP
<?php // PHP program to find foot of perpendicular // of a point in a 3 D plane. // Function to find foot of perpendicular function foot($a, $b, $c, $d, $x1, $y1, $z1) { $k = (-$a * $x1 - $b * $y1 - $c * $z1 - $d) / ($a * $a + $b * $b + $c * $c); $x2 = $a * $k + $x1; $y2 = $b * $k + $y1; $z2 = $c * $k + $z1; echo "x2 = " . round($x2, 1); echo " y2 = " . round($y2, 1); echo " z2 = " . round($z2, 1); } // Driver Code $a = 1; $b = -2; $c = 0; $d = 0; $x1 = -1; $y1 = 3; $z1 = 4; // function call foot($a, $b, $c, $d, $x1, $y1, $z1); // This code is contributed by ita_c ?>
Javascript
<script> // JavaScript program to find // foot of perpendicular // of a point in a 3 D plane. // Function to find foot of perpendicular function foot(a, b, c, d, x1, y1, z1) { var k = (-a * x1 - b * y1 - c * z1 - d) / (a * a + b * b + c * c); var x2 = a * k + x1; var y2 = b * k + y1; var z2 = c * k + z1; document.write("x2 =" + x2.toFixed(1) + " "); document.write("y2 =" + y2.toFixed(1) + " "); document.write("z2 =" + z2.toFixed(1) + " "); } // Driver Code var a = 1; var b = -2; var c = 0; var d = 0; var x1 = -1; var y1 = 3; var z1 = 4; // function call foot(a, b, c, d, x1, y1, z1); </script>
x2 = 0.4 y2 = 0.2 z2 = 4.0
Publicación traducida automáticamente
Artículo escrito por Amber_Saxena y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA