|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
【写在前面】因为图像坐标系和我们平时用的直角坐标系还是有不同的。因此在求点到直线投影点坐标的时候,不敢随便把直线用点斜式表示。为此采用向量的方法求投影点。
- C' x- I% g& X/ }& o9 K( g* A' b% l A# g, {. y, h; a* R
: h4 _8 A% r" w5 P- ~4 z# Z
代码实现
! m4 R, e) F2 X% E# I: r
" v3 k, ~: u. f$ d" zfunction proj_point = ProjPoint( point,line_p )8 Z; ^" x" B% h n
x1 = line_p(1);9 `5 H9 w* F4 Q5 I# N
y1 = line_p(2);
0 Z/ r q# X" |9 P' ]x2 = line_p(3);
' p$ Y( {( R) oy2 = line_p(4);+ r% q5 v# d4 J0 E/ H I" s
$ l3 p K7 Z' j% C- m# w- Jx3 = point(1);) J7 `! G7 S3 { R4 @0 C9 ~: U
y3 = point(2);4 _4 ?" h8 T" E: |. @ H
. r+ h& y7 K* E7 l! C0 h5 qyk = ((x3-x2)*(x1-x2)*(y1-y2) + y3*(y1-y2)^2 + y2*(x1-x2)^2) / (norm([x1-x2,y1-y2])^2);
" `' n' O) N# T( Vxk = ((x1-x2)*x2*(y1-y2) + (x1-x2)*(x1-x2)*(yk-y2)) / ((x1-x2)*(y1-y2));
- V4 ^' N$ w4 v g0 r6 d' t( i/ c `* i/ O3 m
4 q4 D w0 e4 |9 H+ u
if x1 == x2, Y* ~8 N8 S+ N6 b/ I
xk = x1;) |6 D7 K) V% w. d8 c! M
end0 u, G( f! m- h" ]% L$ X
* t' r1 G3 I1 o8 G( z6 }+ Qif y1 == y2
; K6 f* g% ^5 C) `- W' Z! V M' n xk = x3;! T6 u" F! J* C; e# G. D2 v
end1 J5 r2 L0 ~2 J5 Q# h
* e9 H; i1 g' F1 @6 yproj_point = [xk,yk];6 p; L# D% w1 G; ~
& X7 z* X% n z# h& v# K/ A9 K
end
5 y! M/ M4 w$ h) h% N
+ e6 g7 n1 N: O! q2 u( X% n p3 z: Y# {. |7 _7 u% A
+ c& K2 [: y% y
5 |5 K1 E- r0 l
|
|