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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
【写在前面】因为图像坐标系和我们平时用的直角坐标系还是有不同的。因此在求点到直线投影点坐标的时候,不敢随便把直线用点斜式表示。为此采用向量的方法求投影点。
- C' x- I% g& X/ }& o9 K( g* A' b% l  A# g, {. y, h; a* R
: h4 _8 A% r" w5 P- ~4 z# Z
代码实现
! m4 R, e) F2 X% E# I: r
" v3 k, ~: u. f$ d" zfunction proj_point = ProjPoint( point,line_p )8 Z; ^" x" B% h  n
x1 = line_p(1);9 `5 H9 w* F4 Q5 I# N
y1 = line_p(2);
0 Z/ r  q# X" |9 P' ]x2 = line_p(3);
' p$ Y( {( R) oy2 = line_p(4);+ r% q5 v# d4 J0 E/ H  I" s

$ l3 p  K7 Z' j% C- m# w- Jx3 = point(1);) J7 `! G7 S3 {  R4 @0 C9 ~: U
y3 = point(2);4 _4 ?" h8 T" E: |. @  H

. r+ h& y7 K* E7 l! C0 h5 qyk = ((x3-x2)*(x1-x2)*(y1-y2) + y3*(y1-y2)^2 + y2*(x1-x2)^2) / (norm([x1-x2,y1-y2])^2);
" `' n' O) N# T( Vxk = ((x1-x2)*x2*(y1-y2) + (x1-x2)*(x1-x2)*(yk-y2)) / ((x1-x2)*(y1-y2));
- V4 ^' N$ w4 v  g0 r6 d' t( i/ c  `* i/ O3 m
4 q4 D  w0 e4 |9 H+ u
if x1 == x2, Y* ~8 N8 S+ N6 b/ I
    xk = x1;) |6 D7 K) V% w. d8 c! M
end0 u, G( f! m- h" ]% L$ X

* t' r1 G3 I1 o8 G( z6 }+ Qif y1 == y2
; K6 f* g% ^5 C) `- W' Z! V  M' n    xk = x3;! T6 u" F! J* C; e# G. D2 v
end1 J5 r2 L0 ~2 J5 Q# h

* e9 H; i1 g' F1 @6 yproj_point = [xk,yk];6 p; L# D% w1 G; ~
& X7 z* X% n  z# h& v# K/ A9 K
end
5 y! M/ M4 w$ h) h% N
+ e6 g7 n1 N: O! q2 u( X% n  p3 z: Y# {. |7 _7 u% A
+ c& K2 [: y% y
5 |5 K1 E- r0 l

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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