急求一组测体积的算法!

以夕阳落款 2014-07-10 01:40:22
我有一套设计好的仪器,可以通过摄像头测得物体每个点的坐标,假设坐标的个数是无限的(实际不可能测出无限个坐标,大概测出了4000个左右的坐标),以(x,y,z)的格式保存在一个excel中,4000个坐标这个物体的形状大致是有了的,现在求各位大神给个算法,如何通过这4000个坐标来求出物体的体积,给个算法就可以了,java和C语言均可以
...全文
367 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Norris_Zhang 2014-08-11
  • 打赏
  • 举报
回复
我认为可以,至少可以近似求出,毕竟有4000多个点,当然你非要说在某两点之间有一个大坑,那这样抬杠就没意思了,就假设4000个点可以描绘出一个多面体,任意相临三点都组成一个平面。我觉得应该是个积分方向的想法。我知道JAVA的类库中有针对平面多边形的各种变态API,不知道3D类库中是否有相应的API。我不清楚楼主是专门做研究的,还是只是做项目。如果做研究,那你继续,如果只是项目上需要,千万不要自己写算法,你一定写不出来。恕我直言。因为我肯定写不出来。我之前写计算平面不规则图形的切割问题时就费了N多力气,我的经理跟我说一定不要自己写,去找类库,最后在JAVA的类库里果然有现成的实现。 建议楼主看下JAVA有没有3D类库,其中有没有这方面的API,如果没有,拜访下类似于3D MAX这种专门做3D建模的公司,哪怕花些钱,跟他们交流一下,看他们有没有这方面的算法积累。 最后提供一下搜索思路,我之前搜了很多关键词都没有搜到,后来无意中得知多边形的英文单词叫polygon,于是搜polygon时发现,JAVA中那个类的名字就叫Polygon。楼主不妨试试看多面体之类的英文单词,有没有对应的类。
yuhouqingchen_2648 2014-08-11
  • 打赏
  • 举报
回复
引用 5 楼 rumlee 的回复:
按照某一个坐标进行分割,然后通过微积分概念进行运算。
会做么???能写出来》》》???大神。。。。
holzkoepfer 2014-08-11
  • 打赏
  • 举报
回复
你们是如何选取的外表面的测量点? 如果是固定的每隔一定距离(比如Y轴每隔1毫米测一次)测一圈。那么每一层算一个面积,然后面积乘高,这样每一层叠加。不过误差有可能比较大。
holzkoepfer 2014-08-11
  • 打赏
  • 举报
回复
你这个物体是实心的吗?就是中间有没有空腔,另外,外表面是凸多面体吗
以夕阳落款 2014-08-11
  • 打赏
  • 举报
回复
引用 4 楼 zyb134506 的回复:
切割吧,把几个点提取出来标准几何形状.最后加总. 至于怎么提取我不会.
我就是需要能切割提取的算法
以夕阳落款 2014-08-11
  • 打赏
  • 举报
回复
引用 2 楼 holzkoepfer 的回复:
你这些点全是表面坐标吗? 能不能利用每4个点构建一个四面体,然后计算体积再叠加。
是表面坐标,不过你这个方法计算量太大,而且感觉也不对啊
以夕阳落款 2014-08-11
  • 打赏
  • 举报
回复
引用 1 楼 qq695181966 的回复:
你这个情况简直太多了,首先,你的物体是否为规则的立体图形(因为体积这个概念只存在在三维空间)? 如果是规则的话,还要分是柱体还是方体(其区别在于底面积的计算),如果是非规则的话,需要用到积分计算,挺复杂。 希望楼主再思考一下,看看能不能改变一下编程方向,有时候多花时间来想一下问题的实质,就可以少写很多行代码的~
是不规则的,规则的话就不需要这么多点了
shine333 2014-07-11
  • 打赏
  • 举报
回复
我还是那句话:无解。 首先,他现在确实有扫描到了表面的坐标,但那不是表面的坐标方程(或方程组),而且这些只是无穷个表面坐标点的一部分(N再多还是一部分)。 举个夸张点的例子,给你上下左右前后6个坐标(1,1,0),(1,0,1)(-1,1,0)....,你是按照正方体,还是球体还是圆柱体还是圆环的方法来算呢。 但是,如果确保所有关键位置的坐标都已经被测得。同时,空间中某个点,是否位于这个物体内部,也能能够计算出来——这个是关键——可以通过近似的方式(类似积分)来模拟计算。将整个能测的空间测试成X*Y*Z个小正方体。每个正方体都很小。那么,你现在有X*Y*Z个中心点。然后拿每个中心点去和N个坐标比较。由于(假设)已经能判断所有点是否在物体内部,每次测试到一个中心点在物体内部,count++ 最后 count/X*Y*Z (浮点,非整除)就是物体的近似体积。 不过,这个算法的最重要前提,是能够判断任何一个点,是否在物体内部。你现在只有N个点,基本上是不可能做到的,哪怕N=4000,复杂点的图形,就做不到。
lliiqiang 2014-07-11
  • 打赏
  • 举报
回复
这个要根据点分析物体的结构再计算.
BrightFireOfCy 2014-07-11
  • 打赏
  • 举报
回复
这个应该是数学范畴了吧
WuBill 2014-07-11
  • 打赏
  • 举报
回复
不是有现成的积分程序吗
rumlee 2014-07-11
  • 打赏
  • 举报
回复
按照某一个坐标进行分割,然后通过微积分概念进行运算。
快乐的2 2014-07-11
  • 打赏
  • 举报
回复
切割吧,把几个点提取出来标准几何形状.最后加总. 至于怎么提取我不会.
shine333 2014-07-11
  • 打赏
  • 举报
回复
无解[b][b][/b][/b]
holzkoepfer 2014-07-10
  • 打赏
  • 举报
回复
你这些点全是表面坐标吗? 能不能利用每4个点构建一个四面体,然后计算体积再叠加。
  • 打赏
  • 举报
回复
你这个情况简直太多了,首先,你的物体是否为规则的立体图形(因为体积这个概念只存在在三维空间)? 如果是规则的话,还要分是柱体还是方体(其区别在于底面积的计算),如果是非规则的话,需要用到积分计算,挺复杂。 希望楼主再思考一下,看看能不能改变一下编程方向,有时候多花时间来想一下问题的实质,就可以少写很多行代码的~

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧