Расчет объемов полых трехмерных геометрических объектов - PullRequest
2 голосов
/ 02 апреля 2009

Мы получили домашнее задание на Java, которое относится к наследованию. У меня нет проблем с самим программированием, но я немного не уверен насчет математики и хотел бы получить подтверждение / исправления от кого-то, кто более осведомлен.

Назначение начинается с абстрактного класса GeometricObject, который расширяется на три двумерных объекта. Прямоугольник, круг и треугольник. Эти три затем расширяются в кубоид для прямоугольника, цилиндр и сферу для круга, а треугольник в треугольную призму.

Каждый из этих трехмерных объектов является полым, имеет определенную толщину и изготовлен из специального металла, поэтому мы должны рассчитать их вес. И в этом заключается проблема, поскольку я немного не уверен в том, как найти «внутренний объем» на некоторых из них.

  • Cuboid: Здесь я предполагаю, что я могу просто вычесть толщину 2 * из ширины, высоты и глубины, и тогда все выглядит хорошо.
  • Цилиндр: вычтите толщину из радиуса, составляющего основание, и 2 * толщину из высоты
  • Сфера: вычесть толщину из радиуса
  • Призма: это то, где я немного застрял. Каждый объект проходит базовую линию, высоту треугольника и высоту для всей призмы. Как я могу использовать это, чтобы найти «внутреннюю призму», представляющую внутренний объем?

Обновление : забыл упомянуть, что при создании объекта мы указываем максимальные размеры, а полая часть находится внутри этого. Обратный путь запрещен.

Обновить еще раз : Треугольник - это равнобедренный треугольник.

Обновите еще раз : Смешаны радиус и диаметр для кругового. Исправлено.

Ответы [ 3 ]

4 голосов
/ 02 апреля 2009

Я думаю, что вы не можете получить этот результат из имеющихся у вас данных (длина базовой линии и высота треугольника). Вы должны получить другую информацию, например, расположение точек или углов на базовой линии.

Редактировать: так как треугольник равнобедренный:

Как уже указывал Энтони Джонс, внутренний треугольник похож на внешний треугольник. Поэтому единственное, что вам нужно, это найти соотношение между ними.

Эскиз 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.

2 голосов
/ 02 апреля 2009

Одна вещь, которую вы знаете о внутренней призме, состоит в том, что она будет иметь те же отношения, что и внешняя призма. Другими словами, учитывая высоту внутренней призмы, вы можете рассчитать длину внутреннего основания и отсюда объем.

Вы знаете, что основание будет иметь толщину 1 единицу. Таким образом, остается вычислить расстояние от вершины внутренней призмы до вершины внешней призмы.

Это расстояние - гипонтенуз прямоугольного треугольника. Углы в треугольнике известны, так как они являются функцией базовой длины и высоты. Одна сторона треугольника имеет длину thickness, являющуюся перпендикуляром от внутреннего края на внутренней вершине к внешнему краю. (Последняя сторона треугольника находится там, где этот перпендикуляр пересекает внешний край до внешней вершины).

Этого достаточно для использования стандартного триггера для расчета длины гипотенузы. Эта длина плюс 1 толщина (для основания), вычтенная из исходной высоты, дает вам внутреннюю высоту. Соотношение между внутренней и внешней высотой может быть применено к базовой длине.

Возможно, есть более умные способы сделать это, но это был бы мой общий подход.

2 голосов
/ 02 апреля 2009

Получите объем формы, как если бы они не были полыми, затем, получите объем пустоты только (Форма - Толщина)

вычтите полный объем из пустого объема, чтобы получить фактический объем металла.

Пример:

Cube:

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, может показаться, что ваша базовая линия - это Гипотенуза треугольника (самая длинная линия), вышеизложенное все равно должно сохраняться.


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...