找回密码
 注册
关于网站域名变更的通知
查看: 485|回复: 1
打印 上一主题 下一主题

基于Matlab的点到任意直线的投影点坐标的实现

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-6-16 15:06 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
【写在前面】因为图像坐标系和我们平时用的直角坐标系还是有不同的。因此在求点到直线投影点坐标的时候,不敢随便把直线用点斜式表示。为此采用向量的方法求投影点。
: x6 f3 B- s* T! K; C, _4 S' R3 o( `/ F0 {" ?& d; d  y7 b

9 Z& W5 L* V. r; ]- R* A代码实现9 n0 w0 Y0 O( }

% D# \8 i' T' ?& ^: `function proj_point = ProjPoint( point,line_p )
' ]3 w8 ~( m& [& y# Bx1 = line_p(1);
* s) h8 D) S# O& P: o# o* S# b% ?9 Sy1 = line_p(2);
1 m0 O0 B. Q5 {& A  W( wx2 = line_p(3);/ E8 F. A) w9 |/ o# Z9 Z' K$ k
y2 = line_p(4);8 z" a( ]; D2 f6 [1 q

5 U* ]" h& ]) k. Bx3 = point(1);
2 S- c% v6 w+ `- u8 ^& V: |4 Gy3 = point(2);
5 ?& A' R$ S& v% e0 @
7 ~5 a8 s' X  s! ~yk = ((x3-x2)*(x1-x2)*(y1-y2) + y3*(y1-y2)^2 + y2*(x1-x2)^2) / (norm([x1-x2,y1-y2])^2);
5 m; E1 d4 ~( lxk = ((x1-x2)*x2*(y1-y2) + (x1-x2)*(x1-x2)*(yk-y2)) / ((x1-x2)*(y1-y2));! Q) w: E5 u' H3 }1 j% @

% t8 e% o; l7 K7 B! K. r' x; l3 R  J5 g8 w6 p; F  g
if x1 == x2/ G! a: w4 ?; _& {5 e9 ~
    xk = x1;
* O% [  H- M! T! C% Qend$ T3 H0 W$ ?% `( i) F0 J9 @9 t; y

7 e! z& [$ E' j. J# ~6 ?  pif y1 == y2; d8 L6 [6 t4 ?; T
    xk = x3;
6 L) B- R$ x! v! @3 n4 F! wend6 [+ {/ w4 \( P) l) W

8 C; X, C2 w6 nproj_point = [xk,yk];* t4 F2 T) S" \1 N& H; w3 g" }

) W( Q8 q/ F0 C, w0 u' a+ d. gend
4 a  y: x) b- U" h6 P. }6 ^& ?5 Z1 [! A2 E- h# E4 X+ U

' H4 o1 K4 d; D% |3 C+ [: Z9 \2 G1 T) C! R

5 z9 o: C& C9 Z- Z' f4 c  y

该用户从未签到

2#
发表于 2020-6-16 16:21 | 只看该作者
这个代码详细
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 20:01 , Processed in 0.156250 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表