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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
【写在前面】因为图像坐标系和我们平时用的直角坐标系还是有不同的。因此在求点到直线投影点坐标的时候,不敢随便把直线用点斜式表示。为此采用向量的方法求投影点。5 r2 w9 G  u3 Y' C/ Q

4 Y7 C$ M: O" X4 F5 T/ x3 {, a7 i' v( E8 X' h% z7 N* x$ ?0 V
代码实现
% |, W& N5 [/ \0 U
  g  H' \* z3 v2 J& f8 Dfunction proj_point = ProjPoint( point,line_p )
3 }1 D1 ?# w6 {7 ?! v' x% I: dx1 = line_p(1);
7 E# s0 Y. _5 \2 n. x6 Zy1 = line_p(2);
. o  P. Z! q* o' n4 p! sx2 = line_p(3);
; f5 V4 K0 B4 d, P( g$ iy2 = line_p(4);
6 \  e7 b  Z4 w2 m: e/ J
; n0 _6 N8 H+ v' ~6 I! K1 a5 C0 {x3 = point(1);
5 w) W7 i; s5 a  |! G' Y5 H9 vy3 = point(2);* d" V+ a# U* K  F% x7 a4 a
( d. E6 E) ^; U) K2 W% x- G" U  R
yk = ((x3-x2)*(x1-x2)*(y1-y2) + y3*(y1-y2)^2 + y2*(x1-x2)^2) / (norm([x1-x2,y1-y2])^2);- O3 m% C  p. V' e1 P/ C+ U
xk = ((x1-x2)*x2*(y1-y2) + (x1-x2)*(x1-x2)*(yk-y2)) / ((x1-x2)*(y1-y2));( W- U, A" i; y! r5 O  _; U

2 _# A; t, F% i0 E1 Y
  g  z  n$ s* J$ D- E) eif x1 == x2
% ?( W" t, B& u    xk = x1;
( f9 ]0 t1 w: V% U. l# x0 rend% r$ V3 [' B( g4 Q& x
" a( m% J+ k) ?4 b$ E1 z
if y1 == y2. \; E+ Q  A8 F0 U8 v1 Q, `( o
    xk = x3;
. l" J# j3 B$ ~7 P9 Pend
* Y3 o" I5 j  X+ e2 v; ~+ l2 G, m5 v1 v
proj_point = [xk,yk];  {; i; I, V) k/ H" G" l
# i) ]+ H3 }) C) O
end5 D' l* N' t/ J, n' m
( G, O" q2 T+ _6 g0 x# s

/ B3 I8 y  H4 {7 [9 x* Q0 s5 f; @, m' W2 M2 t
/ M" V& l% a/ U8 h2 F6 g4 h

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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