2016-11-07 150 views
0

我需要知道CD的座標,但我無法獲取它們。我知道這是一個非常基本的數學問題,但我無法編碼。已知線上的點的座標

AB的座標是已知的並且dACdBD是已知的。

enter image description here

回答

2

部分的全長

dAB = sqrt((x2-x1).^2 + (y2-y1).^2 + (z2-z1).^2); 

現在,使用dABdACdBD之間的比例,以獲得座標的休息:

x3 = x1 + (dAC./dAB)*(x2-x1); 
y3 = y1 + (dAC./dAB)*(y2-y1); 
z3 = z1 + (dAC./dAB)*(z2-z1); 

同樣

x4 = x1 + ((dAB-dBD)./dAB)*(x2-x1); 
y4 = y1 + ((dAB-dBD)./dAB)*(y2-y1); 
z4 = z1 + ((dAB-dBD)./dAB)*(z2-z1); 

驗證:

figure; 
plot3([x1 x3 x4 x2].',... 
     [y1 y3 y4 y2].',... 
     [z1 z3 z4 z2].',... 
     '-*',... 
     'LineWidth', 1.5); 

和距離

sqrt((x1-x3).^2 + (y1-y3).^2 + (z1-z3).^2) - dAC 
sqrt((x2-x4).^2 + (y2-y4).^2 + (z1-z3).^2) - dBD 

在更MATLABby符號,

% Coordinates of A (x1) and B (X2) 
X1 = [x1 y1 z1].'; 
X2 = [x2 y2 z2].'; 

% distance between A and B 
dX12 = X2 - X1; 
dAB = norm(dX12); 

% Coordinates of C (X3) and D (X4) 
X3 = X1 +  dAC/dAB * dX12; 
X4 = X1 + (dAB-dBD)/dAB * dX12; 


% Plot to verify 
Y = [X1 X3 X4 X2].'; 
plot3(Y(:,1), Y(:,2), Y(:,3),... 
     'r-*',... 
     'LineWidth', 1.5); 

% Distances to verify 
ddAC = norm(X1 - X3) - dAC 
ddBD = norm(X2 - X4) - dBD 
+0

@RodyOldenhuis - 我是這樣的2D人物......錯過'z'完全。感謝編輯! – Shai