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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
【写在前面】因为图像坐标系和我们平时用的直角坐标系还是有不同的。因此在求点到直线投影点坐标的时候,不敢随便把直线用点斜式表示。为此采用向量的方法求投影点。* q! r$ x( m$ g  R

7 \* h6 m2 r/ Q) E! {9 @. t; U8 m' T3 j  b! O; T: Q
代码实现9 R  N8 |! G$ U2 v4 I& T
- {& a3 T# H2 w, R* f4 L
function proj_point = ProjPoint( point,line_p )
' L8 c: ?: H! h: Nx1 = line_p(1);
; ?! ?. v7 ], Q& fy1 = line_p(2);
% d/ ^4 x! U- Y5 m1 {- ]x2 = line_p(3);
) g0 j/ m) C, e- zy2 = line_p(4);: M: x  Y+ V% V' _: w
0 R* ^; P' x$ Z4 ]+ {
x3 = point(1);4 l3 |/ b" P' q: g) k/ V! [( I8 J
y3 = point(2);
# K" R0 }- n. K8 u9 X6 A5 u% r+ _8 I. ]5 T
yk = ((x3-x2)*(x1-x2)*(y1-y2) + y3*(y1-y2)^2 + y2*(x1-x2)^2) / (norm([x1-x2,y1-y2])^2);8 e) j$ ]! ]1 s
xk = ((x1-x2)*x2*(y1-y2) + (x1-x2)*(x1-x2)*(yk-y2)) / ((x1-x2)*(y1-y2));6 e$ n* c( J, F3 @4 L. {

% w% g( e1 \3 _- @* m% B* A) b3 U3 A9 h
if x1 == x2
, b2 k% a- j) `( W3 [    xk = x1;, i. p: D9 W, e" y: b
end% Y& \: J+ g6 ]& X/ b

/ f' S3 N6 |1 W, e3 c0 j8 Qif y1 == y2
" G1 L% Y- L5 O7 I    xk = x3;$ E' W) t4 ^  x$ v( |8 n) b( f
end7 S/ T1 g: H5 d- Z: S+ d' Z

0 i' m: v; j" o) |proj_point = [xk,yk];
9 A& O0 T% p. E, @" x4 o; ?- o: m; R) Z" @) l0 B& M8 `
end
2 |3 a6 B6 E- ?3 U7 l$ h2 j) V  U: s2 v" ~" F

: G( W! t+ S/ @& `
/ V" D* Y. }! O/ _" X" M! B7 W! T
. I. F# b6 b* o" T% S6 s% ]0 e

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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