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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
【写在前面】因为图像坐标系和我们平时用的直角坐标系还是有不同的。因此在求点到直线投影点坐标的时候,不敢随便把直线用点斜式表示。为此采用向量的方法求投影点。4 r6 f8 i! t% c/ D) R

: L( J0 f+ r. E# u$ Q( N& A! N. m
5 R3 {- \( A8 H" q' x1 y! }% l8 o代码实现
4 ]5 U! p, `' D, h  d8 s: b; c- u( C" v+ }1 H$ c1 U, I) @
function proj_point = ProjPoint( point,line_p )7 n5 y% Y8 k, L+ V! U, |# [
x1 = line_p(1);" c$ `5 j( W$ N; g: d! y3 H
y1 = line_p(2);  r8 g( s1 ~2 j' y
x2 = line_p(3);
5 t2 V. N6 F% C2 j2 ly2 = line_p(4);; [" t1 E/ F7 V2 F
4 F2 \2 a* b, j; m) k% B4 O
x3 = point(1);! R" {- Q% x7 ]1 [2 b8 G7 q% S
y3 = point(2);! j2 H5 k/ s3 z" v! E

; G5 T; C+ W5 _( D" @& xyk = ((x3-x2)*(x1-x2)*(y1-y2) + y3*(y1-y2)^2 + y2*(x1-x2)^2) / (norm([x1-x2,y1-y2])^2);
/ O+ w3 Y* w# |8 Y+ G0 S  R+ Lxk = ((x1-x2)*x2*(y1-y2) + (x1-x2)*(x1-x2)*(yk-y2)) / ((x1-x2)*(y1-y2));% G+ g4 Z8 w/ @7 T

$ Z) m$ _3 M# S6 E
2 m9 G+ f- U2 V; b5 @3 {if x1 == x2
) U+ U, Y2 A7 P7 J6 Q    xk = x1;" [. T7 `( Y9 a- h
end
, e% M1 s: Y; G0 |5 F& A9 v' m6 j9 L! `" S% Z0 l
if y1 == y2% t8 ^4 F6 `$ m# s
    xk = x3;" D  J5 \. g1 F! B
end6 P; g' ]4 ?- }" l: J( y! j
2 F: k. b9 ]; t4 `) I
proj_point = [xk,yk];
, ]1 }7 S* h; C: K* D3 o4 ^) x; A6 Q4 t8 m3 c
end$ K, m2 m- J* d0 ?* u; v& ?

) S! o% p1 k5 G/ |% L( B7 K$ I7 w8 c# A1 }
, o' X  O8 W) s! e8 K5 [6 i' L
! Y; g: O! R4 r: w% [0 w* u- B

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-25 10:56 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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