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

Java 计算空心三维几何体的体积,java,math,geometry,Java,Math,Geometry,我们在Java中得到了一个家庭作业,它与继承有关。我对编程本身并没有问题,但我对一些数学知识有点不确定,我希望有一个更懂点的人来确认/更正 赋值从一个抽象类GeometricObject开始,该类被扩展为三个二维对象。一个矩形、一个圆形和一个三角形。然后将这三个形状延伸为长方体,圆形为圆柱体和球体,三角形延伸为三棱柱体 这些三维物体中的每一个都是空心的,有一定的厚度,由特殊的金属制成,所以我们要计算它们的重量。这就是问题所在,因为我有点不确定我是如何找到其中一些的“内部体积”的 长方体:这里我

我们在Java中得到了一个家庭作业,它与继承有关。我对编程本身并没有问题,但我对一些数学知识有点不确定,我希望有一个更懂点的人来确认/更正

赋值从一个抽象类GeometricObject开始,该类被扩展为三个二维对象。一个矩形、一个圆形和一个三角形。然后将这三个形状延伸为长方体,圆形为圆柱体和球体,三角形延伸为三棱柱体

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

  • 长方体:这里我假设我可以从宽度、高度和深度中减去2*厚度,然后一切看起来都很好
  • 圆柱体:从构成底座的半径中减去厚度,从高度中减去2*厚度
  • 球体:从半径中减去厚度
  • 棱镜:这就是我被卡住的地方。每个对象都会传递基线、三角形的高度和整个棱镜的高度。我如何使用它来找到表示内部体积的“内部棱柱体”
更新:忘记了在创建对象时,我们指定了最外面的尺寸,而空心部分就在里面。另一种方式是不允许的

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


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

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

从空心体积中减去完整体积,得到金属的实际体积

例如:

立方体:

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



假设您的棱柱是三角形,三角形是等边的,基线是三角形的底部,高度是从基线到相对点(并且高度线与基线成直角)

那么完整的卷将是

fv = (1/2 * baseLine * triangleHeight) * prismHeight 
hv = (1/2 * (baseline - thickness) * (triangleHeight - thickness)) * (prismHeight - thickness)
空心体积应为

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

在阅读了你对jpaleck的评论之后,你的基线似乎是三角形的斜边(最长的一条线),上面的内容仍然适用



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

编辑:由于三角形是等腰三角形:

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

从高处你可以很容易地找到它。因为三角形CQP和ACS是相似的

h2 : |PQ| = |AC| : |AS|
在哪里


然后,计算
h2
,比率
r=(height-h1-h2)/height
是两个三角形之间的比率。然后,内三角的面积就是外三角的面积。关于内棱镜,你知道的一件事是,它与外棱镜的比率相同。换句话说,给定内棱镜的高度,你可以计算出内底长度和体积

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

这个距离是直角三角形的长度。三角形中的角度是已知的,因为它们是底部长度和高度的函数。三角形的一侧具有
厚度
长度,即从内顶点的内边缘到外边缘的垂直距离。(三角形的最后一侧是垂直线与外缘相交的地方,直至外缘顶点)

这些信息足以使用标准trig计算斜边长度。从原始高度减去该长度加上1个厚度(对于底部),即可得到内部高度。内部和外部高度之间的比率可应用于基础长度


也许有更聪明的方法可以做到这一点,但这将是我常见的方法

是的,这对长方体有效,我就是这样做的。但它对棱镜会起什么作用呢?如果你的棱镜是三角形的,三角形是等边的,那么把每个长度都缩短是正确的吗。然后整个体积为fv=(1/2*基线*三角光)*棱柱高度,空心体积为(1/2*(基线-厚度)*(三角光-厚度)*prismheighty您可能需要将厚度乘以2,以便考虑每侧线条长度的变化。作为10的厚度,当绘制每个尺寸缩短10的形状时,实际上整个尺寸的金属厚度仅为5。@Killersponge:如果三角形是等边的,则不需要包括棱镜的高度,如问题所示。的确。尽管上述公式是正确的,但假设基线是三角形的一侧,三角形的高度是从该直线的中心到其对面的点。可能有助于说明三角形是等腰三角形,两条边的长度相等。这意味着靠近基线的两个角度是相同的。没有给出更多的,可以计算圆柱体和球体的角度:你的意思是从半径中减去厚度。(或者从直径中减去2*厚度。)是的,当然。有点混淆了