怎样在MATLAB里求出一个点到一条曲线的距离?(2P 智力测试题目)
有没有现成的命令? $考虑$ $送花$[ 本帖最后由 姽婳将军 于 2008-7-22 22:27 编辑 ] 自己写个方程就行了啊
求最小值 如何定义一个点到一条曲线的距离啊?
用内积为零吗? 内积为零和点到直线的距离有什么关系 $m28$
lz说的距离应该是指点到曲线上点的距离的最小值 plot 成图,打印出来,然后用圆规量。 原帖由 南宋无间道 于 2008-7-21 23:20 发表 http://www.dolc.de/forum/images/common/back.gif
内积为零和点到直线的距离有什么关系 $m28$
lz说的距离应该是指点到曲线上点的距离的最小值
曲线上一点,与曲线外一点的连线所构成的向量,与曲线上该点方向导数的内积为零。从图形上看就是曲线外一点到曲线上一点的连线与曲线上该点出的切线垂直。 原帖由 南宋无间道 于 2008-7-21 22:48 发表 http://www.dolc.de/forum/images/common/back.gif
自己写个方程就行了啊
求最小值
问题就是怎么写呀$m32$ 原帖由 aileute 于 2008-7-21 23:13 发表 http://www.dolc.de/forum/images/common/back.gif
如何定义一个点到一条曲线的距离啊?
用内积为零吗?
内急是什么东东哦? 原帖由 南宋无间道 于 2008-7-21 23:20 发表 http://www.dolc.de/forum/images/common/back.gif
内积为零和点到直线的距离有什么关系 $m28$
lz说的距离应该是指点到曲线上点的距离的最小值
就是这个意思, 但是曲线方程是未知的 原帖由 Bettencourt 于 2008-7-21 23:40 发表 http://www.dolc.de/forum/images/common/back.gif
plot 成图,打印出来,然后用圆规量。
$m27$ $m27$ $m27$ 原帖由 aileute 于 2008-7-21 23:58 发表 http://www.dolc.de/forum/images/common/back.gif
曲线上一点,与曲线外一点的连线所构成的向量,与曲线上该点方向导数的内积为零。从图形上看就是曲线外一点到曲线上一点的连线与曲线上该点出的切线垂直。
如果是段封闭曲线
不是会有两个距离 $m27$ 其实我要解决的是以下问题。
已知的是一些叉叉点(测量值), 它们基本构成个圆形, 由这些叉叉点得到一个拟合的B-spline曲线(绿色的曲线), 现在要求原始叉叉点到那个B-spline曲线的距离, 这个B-spline曲线是由一堆参数构成的(coefs, breaks, order, etc.), 还原成多项式是可行的, 但是只能还原成多段的多项式, 有几个叉叉点就得到几个多项式, 形状并不是那么perfect, 有些地方存在小拐弯, 会影响最短距离的计算, 而且是7个order左右,太麻烦。 (图里的一小段红色的就是还原出来的第一段曲线, 方程多项式已经算出来了)
我想如果有一个现成的命令,可以求出曲线到点的距离就好了, 最好能知道是正距离还是负距离, 当然是在曲线方程未知的情况下也能算得出就最理想了。$m19$
[ 本帖最后由 姽婳将军 于 2008-7-22 22:25 编辑 ] 原帖由 姽婳将军 于 2008-7-22 22:10 发表 http://www.dolc.de/forum/images/common/back.gif
就是这个意思, 但是曲线方程是未知的
曲线方程未知是啥意思
那不就是曲线都不确定,随便巴拉一条。。。
---------------------------------
设平面内任意曲线为 f(x,y)=0
(x0,y0)为曲线外一点
求出(x0-x)^2+(y0-y)^2的最小值就行了
这一步matlab里面有现成的命令
lz用help搜一下
如果是三维空间
就需要两个曲面方程来确定曲线
g(x,y,z)=0
h(x,y,z)=0
后面的类似 原帖由 南宋无间道 于 2008-7-22 22:28 发表 http://www.dolc.de/forum/images/common/back.gif
曲线方程未知是啥意思
那不就是曲线都不确定,随便巴拉一条。。。
---------------------------------
设平面内任意曲线为 f(x,y)=0
(x0,y0)为曲线外一点
求出(x0-x)^2+(y0-y)^2的最小值就行了
这一步mat ...
我是搜不出来哇。。。你如果知道是哪个就告诉我吧。 我搜distance没有合适的呀。 原帖由 姽婳将军 于 2008-7-22 22:23 发表 http://www.dolc.de/forum/images/common/back.gif
其实我要解决的是以下问题。
已知的是一些叉叉点(测量值), 它们基本构成个圆形, 由这些叉叉点得到一个拟合的B-spline曲线(绿色的曲线), 现在要求原始叉叉点到那个B-spline曲线的距离, 这个B-spline曲线是 ...
曲线方程确定
点也确定
老实算吧 $m12$
用help搜过了吗 原帖由 南宋无间道 于 2008-7-22 22:20 发表 http://www.dolc.de/forum/images/common/back.gif
如果是段封闭曲线
不是会有两个距离 $m27$
何止啊,具体看曲线形状的,如果一个点在圆心,曲线是个圆。所以我问怎么定义! 原帖由 南宋无间道 于 2008-7-22 22:32 发表 http://www.dolc.de/forum/images/common/back.gif
曲线方程确定
点也确定
老实算吧 $m12$
用help搜过了吗
不会算。。。$m28$ 原帖由 aileute 于 2008-7-21 23:58 发表 http://www.dolc.de/forum/images/common/back.gif
曲线上一点,与曲线外一点的连线所构成的向量,与曲线上该点方向导数的内积为零。从图形上看就是曲线外一点到曲线上一点的连线与曲线上该点出的切线垂直。
这个扯了吧,按照你这样的定义,对于很多曲线和点,都没有距离存在。 估计楼主是要算拟合出来的曲线和给定点之间的方差来比较拟合质量。 原帖由 Bettencourt 于 2008-7-22 22:52 发表 http://www.dolc.de/forum/images/common/back.gif
这个扯了吧,按照你这样的定义,对于很多曲线和点,都没有距离存在。
我是没看到过有定义曲线外一点到曲线距离的,我只是根据直线外一点到直线的距离,依葫芦画瓢的定义一下,上面有人定义最短距离,也是一种说法,多半也是从直线距离的另一想到的。现在关键不是提法如何,而是帮lz解决问题。 原帖由 南宋无间道 于 2008-7-22 22:28 发表 http://www.dolc.de/forum/images/common/back.gif
曲线方程未知是啥意思
那不就是曲线都不确定,随便巴拉一条。。。
---------------------------------
设平面内任意曲线为 f(x,y)=0
(x0,y0)为曲线外一点
求出(x0-x)^2+(y0-y)^2的最小值就行了
这一步mat ...
这个理论是没错, 但是实施起来就有问题了, 点对点计算的话, 如果是自己编, 就有Raster该取多少的问题。 1到10的话, 是1:10, 还是1:.5:10? 求出了最小距离, 连出线段, 一放大就看出问题了, 因为曲线上的点是有限的, 曲线外那个点到曲线上点的连线永远不可能垂直曲线的切线, 总是斜的。
大锅, 你是不是真的知道该用哪个命令? $考虑$ 原帖由 aileute 于 2008-7-22 22:59 发表 http://www.dolc.de/forum/images/common/back.gif
我是没看到过有定义曲线外一点到曲线距离的,我只是根据直线外一点到直线的距离,依葫芦画瓢的定义一下,上面有人定义最短距离,也是一种说法,多半也是从直线距离的另一想到的。现在关键不是提法如何,而是帮lz ...
我觉得你这个可能还是条路, 这个内急在matlab里是有些什么命令呢? 我去看看。 b样条有些是控制点,有些是端点,但是b样条总是函数,你现在的这个图形不是函数,应该是分段做的,有些是以x为自变量的函数,有些是以y为自变量的函数。不知道lz是怎么做的呢? 原帖由 姽婳将军 于 2008-7-22 23:03 发表 http://www.dolc.de/forum/images/common/back.gif
我觉得你这个可能还是条路, 这个内急在matlab里是有些什么命令呢? 我去看看。
别忙活了,内积只是定义问题,你的问题实际上是求插值点的误差。 原帖由 姽婳将军 于 2008-7-22 23:03 发表 http://www.dolc.de/forum/images/common/back.gif
我觉得你这个可能还是条路, 这个内急在matlab里是有些什么命令呢? 我去看看。
内积为零就是正交而已,二维的话,分成两个数组对乘就完了,关键是,他的这个方法本身原理就是错误的。
比如,任意一个直角三角形内放一点,然后去掉最长边,你这个内积为零,可以有两点,同理,如果半圆弧,点位于圆心,每个点都是内积为零。
不懂原理就瞎做。$NO$ $NO$ 原帖由 aileute 于 2008-7-22 23:03 发表 http://www.dolc.de/forum/images/common/back.gif
b样条有些是控制点,有些是端点,但是b样条总是函数,你现在的这个图形不是函数,应该是分段做的,有些是以x为自变量的函数,有些是以y为自变量的函数。不知道lz是怎么做的呢?
这个是二维的, x, y 同时为变量, 得出B-spline 之后, 用polyval去恢复它的多项式, 结果为fx, fy, plot(fx, fy)就为那段曲线了。 原帖由 Bettencourt 于 2008-7-22 23:11 发表 http://www.dolc.de/forum/images/common/back.gif
内积为零就是正交而已,二维的话,分成两个数组对乘就完了,关键是,他的这个方法本身原理就是错误的。
比如,任意一个直角三角形内放一点,然后去掉最长边,你这个内积为零,可以有两点,同理,如果半圆弧, ...
我做了一个暂时的结果, 就是用的点对点求最小距离, 就是我上面说的问题, 一放大就看出来了, 并不是真正的最小距离, 连线时歪的, 不是垂直于曲线切线的, 只是个自己骗自己的答案罢了。 原帖由 姽婳将军 于 2008-7-22 23:12 发表 http://www.dolc.de/forum/images/common/back.gif
我做了一个暂时的结果, 就是用的点对点求最小距离, 就是我上面说的问题, 一放大就看出来了, 并不是真正的最小距离, 连线时歪的, 不是垂直于曲线切线的, 只是个自己骗自己的答案罢了。
斜的又不一定是错误的,最小距离没有必要一定要是沿表面梯度方向。比如说,一根线段AB,从(0,0)到(0,1),而外点C位于(-1,1),那么该点到线段的最短距离就是CA。而CA不可能垂直于AB 原帖由 Bettencourt 于 2008-7-22 23:18 发表 http://www.dolc.de/forum/images/common/back.gif
斜的又不一定是错误的,最小距离没有必要一定要是沿表面梯度方向。比如说,一根线段AB,从(0,0)到(0,1),而外点C位于(-1,1),那么该点到线段的最短距离就是CA。而CA不可能垂直于AB
我这个问题是求点到那整个曲线(闭合的曲线)的最小距离, 从图上看, 一定是有最小距离的, 你说的情况是跟我的不大一样。
如果是单看一条线段和一个点, 当然就不一定垂直, 我的这种情况是有好多个点, 点1垂直不到, 点2就垂直的到, 那就算点2对应的那个最小距离。
自己都说的好乱, 你懂吗?$汗$ 你得bspline(x,y)的x用的是多少?0到2pi吗?
我想应该是的。那你先得求出你的样本点对应的插值点的参数,你可以先算出你的每个样本的对原点的弧度,这个弧度就是你b样条的自变量,然后代入你的还原的多项式,算出对应的x'和y',然后算误差就可以了。
[ 本帖最后由 aileute 于 2008-7-22 23:45 编辑 ]
页:
[1]
2