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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
【写在前面】因为图像坐标系和我们平时用的直角坐标系还是有不同的。因此在求点到直线投影点坐标的时候,不敢随便把直线用点斜式表示。为此采用向量的方法求投影点。$ j: S- y3 J8 u, V# A# t

9 [$ j) _1 W$ x. D1 y
+ l4 J# Q& y, a" e+ C代码实现2 p8 a1 {2 w' ]( O( \7 W6 [$ m

( [0 }" `; \7 V. zfunction proj_point = ProjPoint( point,line_p )
5 ]6 S6 f" R0 C9 c2 H/ cx1 = line_p(1);
( A  X1 a. O% w6 z/ ny1 = line_p(2);
* ^$ T  S7 k" ~1 xx2 = line_p(3);* S- Z9 U3 N5 y2 m
y2 = line_p(4);
7 t7 T4 o8 \+ D2 c1 u7 i2 ]
7 W5 q/ |; H- @1 K" `0 d! lx3 = point(1);
% ]( n& |  q6 [9 X) fy3 = point(2);% O+ [& `/ g' }; T9 N
' C( C+ X4 H, m1 \
yk = ((x3-x2)*(x1-x2)*(y1-y2) + y3*(y1-y2)^2 + y2*(x1-x2)^2) / (norm([x1-x2,y1-y2])^2);! R& N0 w+ f8 r
xk = ((x1-x2)*x2*(y1-y2) + (x1-x2)*(x1-x2)*(yk-y2)) / ((x1-x2)*(y1-y2));1 [, n! {2 l5 G
" F: U* {" p0 n0 D! e7 T1 ^2 q1 h" P
$ }2 m1 ^3 M6 K- Z! \+ [
if x1 == x2; k( ~- B' u. K! R/ |
    xk = x1;
" U2 A. {6 |  ?5 Z& a) Eend4 T; q" w2 n+ P9 u$ s1 C# j4 p) t
$ E! O; j7 Q1 e
if y1 == y2
: K/ k+ i& f! C- q* Y2 C' k; E    xk = x3;
9 O( n4 V* |5 O6 [/ J. send) P; |% d1 i, M. x9 Q

0 x' D4 I, Q; L, K# s- s4 nproj_point = [xk,yk];( }3 P3 q4 ]% ?% I+ ~) Z

' T- L& _( d# V/ U7 C, U0 l. O* n9 Jend) X3 e/ b# Z! }# h

, n! \7 t1 k# N+ Y7 x5 k9 M. q3 {. S; F# \2 @

8 [3 M, T# Q4 L0 E3 Z  e! P+ J9 k& _6 A- V- x) n! W  H/ c, F

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-5 21:04 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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