萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

楼主: 姽婳将军

[工程类] 怎样在MATLAB里求出一个点到一条曲线的距离?(2P 智力测试题目)

[复制链接]
 楼主| 发表于 2008-7-22 23:01 | 显示全部楼层
原帖由 南宋无间道 于 2008-7-22 22:28 发表


曲线方程未知是啥意思
那不就是曲线都不确定,随便巴拉一条。。。
---------------------------------
设平面内任意曲线为 f(x,y)=0
(x0,y0)为曲线外一点
求出(x0-x)^2+(y0-y)^2的最小值就行了
这一步mat ...

这个理论是没错, 但是实施起来就有问题了, 点对点计算的话, 如果是自己编, 就有Raster该取多少的问题。 1到10的话, 是1:10, 还是1:.5:10? 求出了最小距离, 连出线段, 一放大就看出问题了, 因为曲线上的点是有限的, 曲线外那个点到曲线上点的连线永远不可能垂直曲线的切线, 总是斜的。

大锅, 你是不是真的知道该用哪个命令? $考虑$
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2008-7-22 23:03 | 显示全部楼层
原帖由 aileute 于 2008-7-22 22:59 发表


我是没看到过有定义曲线外一点到曲线距离的,我只是根据直线外一点到直线的距离,依葫芦画瓢的定义一下,上面有人定义最短距离,也是一种说法,多半也是从直线距离的另一想到的。现在关键不是提法如何,而是帮lz ...

我觉得你这个可能还是条路, 这个内急在matlab里是有些什么命令呢? 我去看看。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2008-7-22 23:03 | 显示全部楼层
b样条有些是控制点,有些是端点,但是b样条总是函数,你现在的这个图形不是函数,应该是分段做的,有些是以x为自变量的函数,有些是以y为自变量的函数。不知道lz是怎么做的呢?
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2008-7-22 23:06 | 显示全部楼层
原帖由 姽婳将军 于 2008-7-22 23:03 发表

我觉得你这个可能还是条路, 这个内急在matlab里是有些什么命令呢? 我去看看。


别忙活了,内积只是定义问题,你的问题实际上是求插值点的误差。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2008-7-22 23:11 | 显示全部楼层
原帖由 姽婳将军 于 2008-7-22 23:03 发表

我觉得你这个可能还是条路, 这个内急在matlab里是有些什么命令呢? 我去看看。


内积为零就是正交而已,二维的话,分成两个数组对乘就完了,关键是,他的这个方法本身原理就是错误的。

比如,任意一个直角三角形内放一点,然后去掉最长边,你这个内积为零,可以有两点,同理,如果半圆弧,点位于圆心,每个点都是内积为零。

不懂原理就瞎做。$NO$ $NO$
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2008-7-22 23:11 | 显示全部楼层
原帖由 aileute 于 2008-7-22 23:03 发表
b样条有些是控制点,有些是端点,但是b样条总是函数,你现在的这个图形不是函数,应该是分段做的,有些是以x为自变量的函数,有些是以y为自变量的函数。不知道lz是怎么做的呢?

这个是二维的, x, y 同时为变量, 得出B-spline 之后, 用polyval去恢复它的多项式, 结果为fx, fy, plot(fx, fy)就为那段曲线了。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2008-7-22 23:12 | 显示全部楼层
原帖由 Bettencourt 于 2008-7-22 23:11 发表


内积为零就是正交而已,二维的话,分成两个数组对乘就完了,关键是,他的这个方法本身原理就是错误的。

比如,任意一个直角三角形内放一点,然后去掉最长边,你这个内积为零,可以有两点,同理,如果半圆弧, ...

我做了一个暂时的结果, 就是用的点对点求最小距离, 就是我上面说的问题, 一放大就看出来了, 并不是真正的最小距离, 连线时歪的, 不是垂直于曲线切线的, 只是个自己骗自己的答案罢了。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2008-7-22 23:18 | 显示全部楼层
原帖由 姽婳将军 于 2008-7-22 23:12 发表

我做了一个暂时的结果, 就是用的点对点求最小距离, 就是我上面说的问题, 一放大就看出来了, 并不是真正的最小距离, 连线时歪的, 不是垂直于曲线切线的, 只是个自己骗自己的答案罢了。


斜的又不一定是错误的,最小距离没有必要一定要是沿表面梯度方向。比如说,一根线段AB,从(0,0)到(0,1),而外点C位于(-1,1),那么该点到线段的最短距离就是CA。而CA不可能垂直于AB
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2008-7-22 23:23 | 显示全部楼层
原帖由 Bettencourt 于 2008-7-22 23:18 发表


斜的又不一定是错误的,最小距离没有必要一定要是沿表面梯度方向。比如说,一根线段AB,从(0,0)到(0,1),而外点C位于(-1,1),那么该点到线段的最短距离就是CA。而CA不可能垂直于AB

我这个问题是求点到那整个曲线(闭合的曲线)的最小距离, 从图上看, 一定是有最小距离的, 你说的情况是跟我的不大一样。

如果是单看一条线段和一个点, 当然就不一定垂直, 我的这种情况是有好多个点, 点1垂直不到, 点2就垂直的到, 那就算点2对应的那个最小距离。

自己都说的好乱, 你懂吗?$汗$
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2008-7-22 23:33 | 显示全部楼层
你得bspline(x,y)的x用的是多少?0到2pi吗?
我想应该是的。那你先得求出你的样本点对应的插值点的参数,你可以先算出你的每个样本的对原点的弧度,这个弧度就是你b样条的自变量,然后代入你的还原的多项式,算出对应的x'和y',然后算误差就可以了。

[ 本帖最后由 aileute 于 2008-7-22 23:45 编辑 ]
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网 |网站地图

GMT+2, 2024-4-27 21:59 , Processed in 0.058006 second(s), 14 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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