已知空間三點,那麼可以就可以確定空間三點組成的平面。此時可以根據某一點的x值和y值,來求取該點在平面上的z值。這個過程對於求三角麵片上某點的高程或者權值特別有用,其本身也可以看作一種線性插值。
其演算法思路也特別簡單,首先算出其三點組成的平面法向量(可參看《已知三點求平面法向量》);然後根據平面法向量\(n=(a,b,c)\)和平面上某點\(m=(x0,y0,z0)\),有平面的點法式方程:
\[a(x-x0)+b(y-y0)+c(z-z0)=0
\]最後根據欲求點的x、y值,代入公式解算z值即可。
具體實現**如下:
#includeusing namespace std;
//三維double向量
struct vec3d
vec3d(double dx, double dy, double dz)
void set(double dx, double dy, double dz) };
//計算三點成面的法向量
void cal_normal_3d(const vec3d& v1, const vec3d& v2, const vec3d& v3, vec3d &vn)
void calplanepointz(const vec3d& v1, const vec3d& v2, const vec3d& v3, vec3d& vp) }
int main()
已知三點求圓心與半徑
已知三點求圓心與半徑 kezunhai gmail.com 在計算機影象圖形學中,經常會用到求圓心或圓半徑的情況,本文介紹一種已知三個點求圓心和圓半徑的方法 當然三個點不能共線,共線的三個點不能構成圓 原理 相互連線三個點,選取其中的任意兩條直線,通過對這兩條直線的中心做垂線,兩條垂線的交點就是圓心...
軟考之路(三) 組成原理
知識概覽1 計算機中的資訊不僅有資料,還有字元 命令,其中資料還有大與小 正數與負數之分。計算機是如何用 0 或 1 來表示這些資訊的呢?1 計算機中數的表示形式 在計算機中,只有數碼1和0兩種不同的狀態,對於乙個數的正 負號,兩種不同狀態,約定正數的符號用0表示,負數的符號用1表示,將符號位放在數...
軟考之路(三) 組成原理
知識概覽1 計算機中的資訊不僅有資料。還有字元 命令,當中資料還有大與小 正數與負數之分。計算機是怎樣用 0 或 1 來表示這些資訊的呢?1 計算機中數的表示形式 在計算機中,僅僅有數碼1和0兩種不同的狀態,對於乙個數的正 負號,兩種不同狀態,約定正數的符號用0表示,負數的符號用1表示,將符號位放在...