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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
【写在前面】因为图像坐标系和我们平时用的直角坐标系还是有不同的。因此在求点到直线投影点坐标的时候,不敢随便把直线用点斜式表示。为此采用向量的方法求投影点。
. R5 Q2 [7 M1 r2 ?4 ~% o* {; q. w( p0 W

* S9 ?7 P9 o7 N& j+ A% F( {代码实现2 r& a" T. u3 C2 n
3 l0 [& d& ?: X% k$ u: |/ R
function proj_point = ProjPoint( point,line_p )
0 y/ z" p$ Y5 V4 a1 r" P( L. W; @x1 = line_p(1);+ `* t. _7 ?" Y; \
y1 = line_p(2);
; b: Y  L0 `# V  G! mx2 = line_p(3);
0 Z+ y! y6 A* Q9 t9 Cy2 = line_p(4);
; h* d9 Z3 b1 ~9 g+ i9 `
6 L7 D; `3 `; O; a% v0 A6 b" m7 vx3 = point(1);4 X5 p0 s- }' \8 d( F! Q% S1 K
y3 = point(2);
8 Q3 F1 Q' q* ~) L; c( N/ ]( K* @" m& o
yk = ((x3-x2)*(x1-x2)*(y1-y2) + y3*(y1-y2)^2 + y2*(x1-x2)^2) / (norm([x1-x2,y1-y2])^2);
, I' E0 M/ j+ k. v7 \$ Sxk = ((x1-x2)*x2*(y1-y2) + (x1-x2)*(x1-x2)*(yk-y2)) / ((x1-x2)*(y1-y2));' \/ p/ y: K# `2 g

7 H# ^$ p1 z" l. V3 e5 o' i& Y- J) |6 W/ a4 \2 H
if x1 == x2: `" g& m) |/ C' ~6 I: Y
    xk = x1;
2 e# T) D- J6 _8 X" Y9 eend
" K$ r/ B% S6 I' h9 ?! y" w" i
# i( g  J; V+ C  _; w# ~5 S% X7 _if y1 == y2
2 M6 f% Q* G2 {' `9 O    xk = x3;- X$ M! t% p; h% Q+ t
end
$ I: ]- g$ s# U1 M" s  r4 o# T4 L1 D# n, Y# X6 ^
proj_point = [xk,yk];( O4 }9 s. m0 `8 L/ G
+ Q; I; @$ @! Z* C( {0 R2 u9 c
end
. f$ [# p; O6 X
- i! W6 j& U4 V
+ z& h$ Y4 B, u* q) ~: Y8 X: i
6 G& B; C( F* ~. i/ ~" X. s$ O+ N3 \$ T# j) j

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 15:16 , Processed in 0.171875 second(s), 24 queries , Gzip On.

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

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

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