|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
【写在前面】因为图像坐标系和我们平时用的直角坐标系还是有不同的。因此在求点到直线投影点坐标的时候,不敢随便把直线用点斜式表示。为此采用向量的方法求投影点。' v6 H" X2 J6 Y) o
& D& `4 Y B+ h& O
" f; f8 B$ l' i0 e代码实现
) Z6 L, {) n. a5 u7 U
! h! N3 V& J' o( jfunction proj_point = ProjPoint( point,line_p )
X9 a% T4 S! s1 q4 ]) Ex1 = line_p(1);* _+ O7 o" E2 x% x' r
y1 = line_p(2);8 o8 _0 F) R9 ~) y' Q- G- {
x2 = line_p(3);
2 p7 ~3 c6 q4 f) Qy2 = line_p(4);' L1 Y5 ?3 y5 H$ z7 K- e1 _. q
$ ~0 K2 J: f+ s4 `# s. J5 ]4 p8 yx3 = point(1);
7 R. d4 A! b4 R# x/ \& Dy3 = point(2);! o$ v: v3 O/ B$ E- w- T! w
. Q E- T" r! M1 l2 x6 lyk = ((x3-x2)*(x1-x2)*(y1-y2) + y3*(y1-y2)^2 + y2*(x1-x2)^2) / (norm([x1-x2,y1-y2])^2);1 w5 \3 U! @6 }8 k2 l+ Q
xk = ((x1-x2)*x2*(y1-y2) + (x1-x2)*(x1-x2)*(yk-y2)) / ((x1-x2)*(y1-y2));
6 w1 B% A7 p o8 f1 a8 c+ P5 d) E; C7 r, B9 z4 P) A
( F/ j2 T* Q( H3 a
if x1 == x2
6 _+ b- X3 [, \ xk = x1;
7 ?8 @! h6 v2 o) |. \7 U1 e1 A7 cend
- ?& o- J P9 @; V* g0 z8 ]9 L! u* |1 m8 s7 v' O# U; @
if y1 == y2
& M# O2 O% M9 |* p4 N xk = x3;) [7 U: M* k( [+ i
end9 W4 I8 c7 ~* \0 c; O
6 f! g3 E- y& R4 u
proj_point = [xk,yk];
# g. {; B' t& `( ~+ q7 e+ ]- b, T+ z. Y/ g
end, ~ g& Z; T0 M6 E
9 q7 M* a5 l4 K' q6 _: V
$ d% b( C) o. h$ E4 [7 _% F6 x3 m+ \2 A7 T! i! S7 \
: u9 Z! t4 I/ _0 a |
|