我们在Java中完成了一项与继承相关的作业。我对编程本身没有任何问题,但是我对某些数学有点不确定,并希望得到更多知识的人的确认/更正。
赋值以一个抽象类GeometricObject开始,该类扩展为三个二维对象。矩形,圆形和三角形。然后将这三个扩展为矩形的长方体,圆形的圆柱体和球体,以及三角形的三角形棱柱。
这些三维物体中的每一个都是中空的,并且具有确定的厚度并且由特殊金属制成,因此我们要计算它们的重量。这就是问题所在,因为我有点不确定如何找到其中一些的“内部卷”。
更新:忘记提及在创建对象时,我们指定最外面的尺寸,空心部分在此内部。反过来是不允许的。
再次更新:三角形是等腰三角形。
再次更新:圆形的半径和直径混合。现已更正。
答案 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个厚度(对于基础),可以得到内部高度。内高和外高之间的比例可以应用于基部长度。
可能有更聪明的方法来做到这一点,但这将是我常见的家伙方法。