|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
【写在前面】因为图像坐标系和我们平时用的直角坐标系还是有不同的。因此在求点到直线投影点坐标的时候,不敢随便把直线用点斜式表示。为此采用向量的方法求投影点。' ~, _0 C4 A( C6 ~
& g% M) I( y6 o# g& z8 l( [" A& h# r# F9 l
代码实现
2 b/ x: c% X3 E9 Y- ^. e
9 h9 n) ?( Y& ?4 _; H* P. Lfunction proj_point = ProjPoint( point,line_p )
6 r3 O$ s/ [* w! K, fx1 = line_p(1);
+ x Z1 v! A$ d8 m/ y) ey1 = line_p(2);
( D0 m/ V0 M4 e) D2 `x2 = line_p(3);/ k8 E! |5 |0 d+ D
y2 = line_p(4);' M; d0 Y- N9 w& j$ E9 m! i
+ {8 \& T7 H. u% ?2 ^
x3 = point(1);
( A5 ?. d4 E+ R5 Py3 = point(2);
. J2 \$ ~2 _9 ]3 j0 ?* j R; u$ f6 D* i: H7 X' X c H+ V7 \; A
yk = ((x3-x2)*(x1-x2)*(y1-y2) + y3*(y1-y2)^2 + y2*(x1-x2)^2) / (norm([x1-x2,y1-y2])^2);
0 H/ x' E2 a& q1 g: Nxk = ((x1-x2)*x2*(y1-y2) + (x1-x2)*(x1-x2)*(yk-y2)) / ((x1-x2)*(y1-y2));# T' T$ d9 @+ j& F
) T* P- e9 Q7 u5 n
% }& K' R% ]# ~+ @/ p; r; Z' G* Aif x1 == x2& o5 a! M7 c) e' n! a9 V
xk = x1;
- z: Z' `4 B& `end8 h* v# }2 D5 O
- h$ \. i9 X% A+ d% U3 z5 _
if y1 == y2
+ s% d& H! D( N9 w# ]3 s0 [4 C3 _: I xk = x3;
( u! H8 h6 O; @' o4 a2 }end
5 n3 X" z: J g% h. M) h# h! T% F( ^! k3 [- x
proj_point = [xk,yk];# S& ^2 a3 J+ [; \" ~: [6 [2 T
8 V2 [8 U. c6 D" t
end8 g; @! Z u4 h2 [, Z$ X
/ u- V2 S# w- G; m4 S
! F1 {. P4 U' l' X
& f2 ^) t9 J/ ]1 b
3 E1 z, u- m- ^# E3 W' B |
|