2014-03-03 34 views
0

給定一個域(2D網格),兩條路線:Matlab的中點在2D領域

D = [-0.99 0.99;-0.99 0.99]; %domain 
x = 0.0676 ; 
y = 0.7630]; 

給定的矢量線條:

pt = [0.0676 0.7630] 

什麼是最有效的辦法,我在Matlab中找到四個中點?

謝謝你

+1

四個中點是什麼?兩條線在哪裏?我假設你的域是一個方形網格,範圍從-0.99到0.99。 –

+0

我的域名是方形網格[-0.99,0.99] * [ - 0.99,0.99]。這兩行將域分成4個子域。我正在尋找一種方法來找到這些子域的中點。 – kirikoumath

+0

我不明白'[0.0676 0.7630]'可以給你兩條線。也許一張圖可能有幫助,或者一個更徹底的解釋。你目前寫了哪些代碼,爲什麼它不按照你的意圖工作? – David

回答

0

如果我明白問題的正確性,你正試圖做到這一點。

Matlab Plot of Code

此代碼它,你當然可以通過更好地利用向量和矩陣運算的提高性能,但如果這只是一個問題,這個簡單的優化是不值得的。

dlim_x = [-0.99 0.99]; 
dlim_y = [-0.99 0.99]; 
x = 0.0676; 
y = 0.7630; 

domain_vec_x = [dlim_x(1) dlim_x(1) dlim_x(2) dlim_x(2) dlim_x(1)]; 
domain_vec_y = [dlim_y(1) dlim_y(2) dlim_y(2) dlim_y(1) dlim_y(1)]; 
line(domain_vec_x, domain_vec_y); 
line([x x], dlim_y, 'linestyle', ':'); 
line(dlim_x, [y y], 'linestyle', ':'); 
xlim([1.1*dlim_x]); 
ylim([1.1*dlim_y]); 
hold on; 

x1 = mean([dlim_x(1), x]); 
x2 = mean([x, dlim_x(2)]); 
y1 = mean([dlim_y(1), y]); 
y2 = mean([y, dlim_y(2)]); 

plot(x1,y1,'^') 
plot(x2,y1,'^') 
plot(x1,y2,'^') 
plot(x2,y2,'^')