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

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

[复制链接]

该用户从未签到

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

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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