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

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

[复制链接]

该用户从未签到

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

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-24 08:29 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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