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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
【写在前面】因为图像坐标系和我们平时用的直角坐标系还是有不同的。因此在求点到直线投影点坐标的时候,不敢随便把直线用点斜式表示。为此采用向量的方法求投影点。0 s( U& ~% M8 ^: ?! V
; y7 ?! h( D" l0 V1 ?3 n

+ b; g( ~! P+ U/ \; r代码实现: C; M; S* S) X% H. z2 @2 x0 o* B  ~
, W7 K+ C, w2 K# N: P8 g
function proj_point = ProjPoint( point,line_p )2 }( T' A- U% M- C3 I4 z7 `5 [
x1 = line_p(1);$ s6 j- \: d% q. @! M. j
y1 = line_p(2);
4 |' t2 f6 j" W9 r* rx2 = line_p(3);. ^& x! n% z9 @7 L
y2 = line_p(4);; H% G% x3 O! k! T8 o
$ q2 P# q0 m0 }- E9 \
x3 = point(1);0 ?' u0 D, Q2 n5 T2 G, r" L
y3 = point(2);$ a1 P% ^3 ?: E* m

6 f0 c, L5 b3 o" p/ j& Eyk = ((x3-x2)*(x1-x2)*(y1-y2) + y3*(y1-y2)^2 + y2*(x1-x2)^2) / (norm([x1-x2,y1-y2])^2);# I  j; g6 e+ l* j# Y% ]% p% c
xk = ((x1-x2)*x2*(y1-y2) + (x1-x2)*(x1-x2)*(yk-y2)) / ((x1-x2)*(y1-y2));/ V$ }2 L3 O3 r8 r7 b- x
& E1 w/ S6 L: R3 t& m
& z" h6 L% J5 F9 P* A
if x1 == x2
0 I$ L* D2 p& Z# y- c1 K( X) ^# |5 t    xk = x1;! e3 ^$ d" B) b5 V5 X6 c2 k
end
* S7 ~  H4 ^! q+ n" K( @7 j1 G% |$ u' n0 b% k1 d3 t
if y1 == y2/ G, S5 ]) a' d' h
    xk = x3;, S4 ?6 v, U. C3 x) a
end
% I8 X5 A, J  h* @4 V, f
2 v5 _' l! X' Z* O9 {proj_point = [xk,yk];, z# \1 H( u) F! h% m& }4 P
# M5 x2 E3 H! p
end9 S+ W  W4 @1 Q9 p2 J
( ]' m' P4 Y, I
& Q8 ]0 E/ M4 p, p* q; _

; j# h+ S( }" u* Z0 \+ E7 w# X$ ~9 @6 p

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-5 13:08 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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