已知三點求平面的法向量 —— 兩種方法
最近學圖形學時遇到了這個問題,PPT 給的大概是一個通過線性代數的方法求的,有點看不懂。加上線性代數早就忘光了,更加是一臉茫然。但是這個知識點在高中講過,自己卻怎麼也記不起來了,直到今天突然記起來了,特此記錄一下。
問題描述
已知三點 P1(x1,y1,y1),P2(x2,y2,y2),P3(x3,y3,y3)。要求求出這三個點構成平面的法向量。
高中知識
我們知道法向量是和平面垂直的,因此法向量也和該平面上任意一條向量垂直,即點乘積為 0。
利用這個性質,我們可以構造兩個方程,此時我們不妨設法向量
n
=(x,y,z)。
n
・ P1P2
=0n
・ P1P3
=0
將
P1P2P3 座標帶入即可。
x(x1−x2)+y(y1−y2)+z(z1−z2)=0x(x1−x3)+y(y1−y3)+z(z1−z3)=0
然後我們不妨假設 x=1, 這樣即可求出 x y z(三個方程三個未知量)。
p.s 這樣求出的法向量可能會有分數,可以自行改造一下。
大學知識1
相關推薦
已知三點求平面的法向量 —— 兩種方法
最近學圖形學時遇到了這個問題,PPT 給的大概是一個通過線性代數的方法求的,有點看不懂。加上線性代數早就忘光了,更加是一臉茫然。但是這個知識點在高中講過,自己卻怎麼也記不起來了,直到今天突然記起來了,特此記錄一下。 問題描述 已知三點
已知三點求平面方程、平面法向量和點到平面的距離
已知三點p1(x1,y1,z1),p2(x2,y2,z2),p3(x3,y3,z3),要求確定的平面方程 關鍵在於求出平面的一個法向量,為此做向量p1p2(x2-x1,y2-y1,z2-z1), p1p3(x3-x1,y3-y1,z3-z1),平面法線和這兩個向量垂直,因此法向量n: 平面方程:a(x-x
C# 已知三點求 三點之間夾角角度
public static double Angle(Point cen, Point first, Point second) { &nb
Scala實現:已知三點坐標,求最短距離(如果在垂足不在線段內,最短距離為到其中一點的直線距離)
線段 在線 obj creat sqrt reat 最短距離 最小 space /** * 已知三點坐標,求其中一點到另兩點的垂線距離 * (如果在垂足不在線段內,最短距離為到其中一點的直線距離) * Created by wzq on 17-11-2. */obj
已知三點計算三角形面積
math import imp [1] col alc style clas abs 1、#轉化為通過三邊計算三角形面積 1 import math 2 def cal_area(p1,p2,p3): 9 a = float(math.sqrt((p2[0]-p3[
已知某二叉樹的某兩種遍歷序列,求另一種遍歷序列面試題解法總結(轉)
某二叉樹的後序遍歷序列為dabec,中序遍歷序列為debac,則前序遍歷序列為 。 A、acbed B、 decab C、 deabc D、 cedba 解法如下: 先在兩種遍歷序列中找臨近的兩個或三個字元(內容相同,但順序可能
已知二叉樹,根據任意兩種遍歷順序,求另外一種的遍歷順序
訪問 ima bubuko 左右 技術 二叉 容易 loading gif 其實只要記住先序,中序,後序的遍歷順序就容易多了 先序(根左右):先訪問根節點,再先序遍歷左子樹,然後是右子樹 中序:左根右 後序:左右根 如圖: 已知二叉樹,根據任意兩
SA:T1編寫主函數法和T2Matlab自帶的SA工具箱GUI法,兩種方法實現對二元函數優化求解——Jason niu
lin plot itl 最優解 IT 主函數 alt 圖片 gui %SA:T1法利用Matlab編寫主函數實現對定義域[-5,5]上的二元函數求最優解—Jason niu [x,y] = meshgrid(-5:0.1:5,-5:0.1:5); z = x.^2 +
除法求模中求逆元的兩種方法
除法 模運算 擴展歐幾裏得 tps sdn 求解 blog span emma 今天下午還是有點閑的,不想刷題,不想補題,突然想起昨天的training 3裏I題涉及到除法取模的問題,就來總結一下 首先對於模運算來說,是沒有對於除法的取模的(即沒有(a/b)%mod
C語言判斷素數(求素數)(兩種方法)(第二種沒看懂Kkkkk有空一定搞明白)(非原創)
素數又稱質數。所謂素數是指除了 1 和它本身以外,不能被任何整數整除的數,例如17就是素數,因為它不能被 2~16 的任一整數整除。 思路1):因此判斷一個整數m是否是素數,只需把 m 被 2 ~ m-1 之間的每一個整數去除,如果都不能被整除,那麼 m 就是一個素數。 思路2):另
判斷當前環境是大端法還是小端法的兩種方法
1:寫一個聯合體判斷 ///一個32位四位元組的整數值,例如:1,實際的計算機編碼表示是0x000000001 ///小端系統中在記憶體中的表示是 01 00 00 00 ///大端系統中在記憶體中的表示是 00 00 00 01 union EndianTest{ int8
C++ 求列舉排列的兩種方法
列舉排列常用的方法有兩種:一是遞迴列舉,二是用STL中的next_permutation。1.列舉遞迴:void print_permutation(int n,int *p,int *A,int cu
求水仙花數的兩種方法
程式碼如下: public class Test4 { public static void main(String[] args) { //方法一: for(int i=2;i<=1
深入講解iOS鍵盤三:自定義鍵盤的兩種方法
iOS系統提供了多種鍵盤,我們可以通過Enum型別設定。但有的時候由於某些特殊業務的需要,我們不得不自定義鍵盤,比如某些銀行的APP處於安全考慮,他們鍵盤數字的位置是隨機的,這個時候只能自定義鍵盤。幸運的是,iOS也為我們提供了多種方式自定義鍵盤。我們可以根據自身情況選擇合適
C++裡已知三個三維點,求他們的平面方程,怎麼做?
已知三個點座標為P1(x1,y1,z1), P2(x2,y2,z2), P3(x3,y3,z3) 所以可以設方程為A(x - x1) + B(y - y1) + C(z - z1) = 0 (點法式) (也可設為過另外兩個點) 核心程式碼: //在此之前寫好錄入三個三維點
求內切圓的圓心和半徑(已知三個點的座標)
/****** m0 n0 m1 n1 m2 n2 為三角形的三個點的座標值 m為橫座標 n為縱座標 px 內切圓的圓心的橫座標 py 內切圓的圓心的縱座標 pr 內切圓的半徑 ***/ int NeiQieYuan(int m0, int n0, int m1, int n1, int m2, int
linux c下求已知三條邊的三角形的面積
首先使用的演算法有兩種: 1.用餘弦定理求出一個角的餘弦,然後求出正弦角A,然後用s=1/2*(a*b*sinA)來求面積; 2.直接用海倫公式,p=(a+b+c)/2,s=sqrt(p*(p-a)*(p-b)*(p-c)); 然後寫完的程式碼如下: #include<st
已知生日,求年齡,pandas實現
今天在群裡遇到個問題,已經知道生日怎麼計算出年齡,注意有個知識點 pandas.Series.dt 可以將serices資料型別與datetime型別進行計算。感謝原文作者https://blog.csdn.net/zhangjy3738/article/details/
在地球上,已知A點的經緯度和B點的經緯度,算出AB點之間的距離
public static void main(String[] args) { double earthR = 6371000;//地球大致半徑 double lat1 = aa.aaaa; //A的緯度 double lng1 = bb.bbbb;//A的經度
PCL中計算點雲的法向量並顯示
// NormalEstimation.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <pcl/point_t