24小时热门版块排行榜    

查看: 755  |  回复: 3

fubeiyun

新虫 (小有名气)

[求助] 多面体重心公式及fortran编程实现 已有2人参与

已经知道任一凸多面体的顶点坐标,求其重心表达式,需要用只含顶点位置坐标表示。并写出fortran语句

[ 发自手机版 http://muchong.com/3g ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

浔荆

木虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
解析表达式很难给出来,数值解倒是可以求。我给你提供一个算法吧:
1、建立一个长方体的胞,在把多面体所有的顶点都包含进去的前提下,胞的大小尽可能的小。可以简单取求所有点在xyz方向上的最大、最小值的差,作为胞的边长。
2、在这个胞内随机的撒一个点。
3、判断这个点是否在多面体内部,算法可以参考http://www.guokr.com/post/446889/
4、如果在内部,记录这个点的坐标信息,如果不在,则删除这个点。
5、返回第2步,重复该过程足够多次。
6、统计所有多面体内部点,取其坐标的平均值,该值就是多面体的重心。

这个蒙特卡洛算法很简单,实现起来应该不难。楼主自己写代码吧,不要奢求别人帮你写好。
2楼2015-06-26 11:50:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cooooldog

铁杆木虫 (著名写手)

ส็็็

【答案】应助回帖

感谢参与,应助指数 +1
这个用Fortran来写太难为人了。虽然学过,但是最不喜欢的就是对格式要求很高的语言。

此外,如果对重心的精度要求高,蒙特卡洛方法不可行的情况下,算法比较繁琐。
不是自己的课题或必须的话,给100元我也不会写。 不过讨论下还是可以的。

1. 凸多面体跟任意多面体的情况不同; 估计是凸多面体;
2. 计算重心不可避免要考虑,质量是仅仅集中在顶点?还是仅集中在多面体的棱、多面体的面?还是实心的凸多面体,密度分布均匀? 实心的密度均匀的凸多面体是各种情形中最不容易计算的;
3. 考虑实心的、密度均匀的凸多面体的情形,要求精确求其质心坐标,即蒙特卡洛方法不可行的情况下。 通常的方法是把凸多面体分割成多个四面体(四面体的质心是容易计算的,它是四面体所有类中线(顶点跟该点对面质心之间连线)的公共交点),然后再计算这些四面体质心的重心。所以,问题转化为如何把凸多面体剖分为多个四面体(比如最小个数的)。
4. 剖分凸多面体为最小数量(或其它原则,以方便计算为准)的四面体,可以先固定某个顶点,然后对该顶点不在其上的多面体的所有面作最少三角个数的三角剖分(这个应该是基础的Delaunay算法),然后小三角形为底面,该顶点为顶点的四面体就是。
ส็็็็็็็็็็็็็็็็็็็็
3楼2015-06-26 17:54:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

walk1997

金虫 (著名写手)

怎么感觉象是作业题,"并写出fortran语句"?
4楼2015-06-28 09:40:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 fubeiyun 的主题更新
信息提示
请填处理意见