找回密码
 欢迎注册
查看: 28693|回复: 14

[原创] 一点到长方体的最小(大)距离简单计算公式

[复制链接]
发表于 2017-10-10 15:08:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
假设三维欧氏空间的一个正长方体中心在原点(|x|≤a;|y|≤b;|z|≤c;a、b、c为三个大于0的实数),此长方体外有一定点A,坐标位置为(x0,y0,z0)。求点A到此长方体的最小和最大距离的巧妙简单公式。
也就是求A点与长方体中(包括边界面)任一点组成的线段中,最短与最长线段长度分别是多少?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2017-10-10 15:54:27 | 显示全部楼层
长方体各个面所在平面将整个长方体之外的空间划分为数个区域,判断A落在哪个区域(若落在边界上,可以从中任意选一个)。
对于每一个区域来说,落在该区域的点与长方体最近的那个点,必然落在该区域对应的长方体边界上(棱或者面),只需要往该边界上作垂线即可。由于长方体是凸集,故离A最远的点必然在对当前所在区域对应面的对立面(或棱)上的某个顶点,比较A相对于长方体中心的位置,选择较远一侧那个顶点即可。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2017-10-10 19:51:26 | 显示全部楼层
本帖最后由 sheng_jianguo 于 2017-10-10 19:54 编辑
kastin 发表于 2017-10-10 15:54
长方体各个面所在平面将整个长方体之外的空间划分为数个区域,判断A落在哪个区域(若落在边界上,可以从中 ...


将空间分为几个区域是可以求解,我也试过分为14个区域求解,但需要很多判别式,又需要14个公式。
我的题目意思,能否找到一个统一简单公式(判别式不超过2个)就能求出最小长度,同样能否找到一个统一简单公式(判别式不超过2个)就能求出最大长度?
注:公式中变量仅为a,b,c,x0,y0,z0。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2017-10-10 19:57:35 | 显示全部楼层
sheng_jianguo 发表于 2017-10-10 19:51
将空间分为几个区域是可以求解,我也试过分为14个区域求解,但需要很多判别式,又需要14个公式。
我的题 ...

不大可能,因为长方体曲面本身就不是一个可以用连续函数精确表示的,因此这个长度必然是分区间表示的。如果要找到一个简单表达式,可以将这些不同结果从形式上观察,然后加入一些特殊的不连续函数(类似开关函数),这样可以在形式上统一起来,但本质上并没有解决问题。

补充内容 (2017-10-11 14:27):
这里的“连续”是笔误,应该是“光滑”
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2017-10-10 21:40:51 来自手机 | 显示全部楼层
不就是(|x|,|y|,|z|)到(a,b,c)和(-a,-b,-c)的距离嘛
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2017-10-10 21:48:52 | 显示全部楼层
kastin 发表于 2017-10-10 19:57
不大可能,因为长方体曲面本身就不是一个可以用连续函数精确表示的,因此这个长度必然是分区间表示的。如 ...

对于我来说,能用一个公式能计算最短(长)距离就解决问题了,编程简单,不易出错。
用几个连续函数和一个不连续函数,只要计算公式正确,本质上是一样的。
您得出用一个连续函数不能解决此问题推导不严谨,我还是以为用一个连续函数解决此问题是有可能的。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2017-10-10 22:06:18 来自手机 | 显示全部楼层
首先对所有坐标求绝对值转化为所有坐标非负情况。然后又构造点各坐标分别为min(a,x)等,这个构造点到原点距离即最短距离
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2017-10-11 12:17:33 | 显示全部楼层
受mathe 启发,导出了计算最短(长)距离公式如下:
最短距离公式:
$sqrt{(max(|xo|-a,0))^2+(max(|yo|-b,0))^2+(max(|zo|-c,0))^2}$
最长距离公式:
$sqrt{(|xo|+a)^2+(|yo|+b)^2+(|zo|+c)^2}$
应该都是连续函数吧。
不知是否有漏洞,是否还有更巧妙的公式。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2017-10-12 11:29:02 | 显示全部楼层
直接代数解其实也不麻烦啦, 设长方体上的点为$P$ $(x,y,z)$,那么距离表达式是 $PA^2= (x_0-x)^2+(y_0-y)^2+(z_0-z)^2$,其中$|x|<=a,|y|<=b,|z|<=c$。
-------------------------
1)取极值的时候,一定位于边界。即长方体的表面, 边界方程是 $|x|=a\bigcup |y|=b \bigcup|z|=c$.   
2)根据对称性,我们只取1/8的区域,于是不妨都取非负部分。所以问题转化为:求$PA^2= (|x_0|-x)^2+(|y_0|-y)^2+(|z_0|-z)^2$的极值,其中$|x|=a\bigcup |y|=b \bigcup|z|=c$.
3) 所以,不难得到 $PA_{max}^2 = (|x_0|+a)^2+(|y_0|+b)^2+(|z_0|+c)^2$
$PA_{min}^2 = (max(|x_0|-a,0))^2+(max(|y_0|-b,0))^2+(max(|z_0|-c,0))^2 $
------------------------------------
不知道对不对,没有仔细推敲,有空再补充。。。。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-11-22 10:30 , Processed in 0.033369 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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