计算空心三维几何物体的体积

时间:2009-04-02 09:14:54

标签: java math geometry

我们在Java中完成了一项与继承相关的作业。我对编程本身没有任何问题,但是我对某些数学有点不确定,并希望得到更多知识的人的确认/更正。

赋值以一个抽象类GeometricObject开始,该类扩展为三个二维对象。矩形,圆形和三角形。然后将这三个扩展为矩形的长方体,圆形的圆柱体和球体,以及三角形的三角形棱柱。

这些三维物体中的每一个都是中空的,并且具有确定的厚度并且由特殊金属制成,因此我们要计算它们的重量。这就是问题所在,因为我有点不确定如何找到其中一些的“内部卷”。

  • 长方体:我假设我可以从宽度,高度和深度中减去2 *厚度,然后一切看起来都很好。
  • 气缸:从构成基座的半径减去厚度,从高度减去2 *厚度
  • 球体:从半径减去厚度
  • 棱镜:这是我有点卡住的地方。每个对象都通过基线,三角形的高度和整个棱镜的高度。我如何使用它来找到代表内部体积的“内部棱镜”?

更新:忘记提及在创建对象时,我们指定最外面的尺寸,空心部分在此内部。反过来是不允许的。

再次更新:三角形是等腰三角形。

再次更新:圆形的半径和直径混合。现已更正。

3 个答案:

答案 0 :(得分:4)

我认为你不能从你拥有的数据中获得这个结果(基线长度和三角形高度)。您必须获取其他信息,例如点的位置或基线处的角度。

编辑:因为三角形是等腰:

正如AnthonyWJones已经指出的那样,内三角与外三角相似。因此,您唯一需要的是找到两者之间的比率。

sketch http://img76.imageshack.us/img76/4164/g2654.png

您可以从高处轻松找到它。由于三角形CQP和ACS相似

h2 : |PQ| = |AC| : |AS|

,其中

|PQ| = h1 (= the thickness of the metal)
|AC| = sqrt(base^2/4+height^2)
|AS| = base/2

然后,您计算h2,比率r = (height - h1 - h2)/height是两个三角形之间的比率。然后内三角区域为r^2 * area of the outer triangle

答案 1 :(得分:2)

获取形状的体积,就好像它们不是空心的一样,然后,只获得空心体积(形状 - 厚度)

从空心体积中减去全部体积以获得金属的实际体积。

示例:

立方数:

Full Volume: Height * Width * Depth

hollow volume: (Height - Thickness) * ( Width - Thickness ) * ( Depth - Thickness)

Volume of the metal used: Full Volume - hollow Volume

根据所用金属的体积计算出重量。


假设你的棱镜是三角形并且三角形是等边,基线是三角形的底部,高度是从基线到相对点(高度线在右边)从基线开始的角度)。

然后完整的音量将是

fv = (1/2 * baseLine * triangleHeight) * prismHeight 

空心体积

hv = (1/2 * (baseline - thickness) * (triangleHeight - thickness)) * (prismHeight - thickness)

读完你对jpaleck的评论,看来你的基线是三角形的斜边,(最长的一条线),上面应该仍然适用。


答案 2 :(得分:2)

你对内棱镜知道的一点是它与外棱镜的比例相同。换句话说,考虑到内棱镜的高度,您可以计算内部基部长度并从那里计算体积。

你知道底座有1个单位厚度。这样就可以计算出从内棱镜顶峰到外棱镜顶点的距离。

该距离是直角三角形的低位。三角形中的角度是已知的,因为它们是基部长度和高度的函数。三角形的一边是thickness长度,是从内顶峰的内边缘到外边缘的垂线。 (三角形的最后一侧是垂直与外边缘相交的位置,直到外顶峰)。

这足以使用标准触发来计算斜边长度。从原始高度减去此长度加上1个厚度(对于基础),可以得到内部高度。内高和外高之间的比例可以应用于基部长度。

可能有更聪明的方法来做到这一点,但这将是我常见的家伙方法。