ML29. Площадь тетраэдра

Тетраэдр

Тетраэдр

Задача. Найти площадь полной поверхности тетраэдра три стороны которого образованы векторами [latex]\overrightarrow{a}=(a_x,a_y,a_z)[/latex], [latex] \overrightarrow{b}=(b_x,b_y,b_z)[/latex] и [latex]\overrightarrow{c}=(c_x,c_y,c_z)[/latex].
Тесты:

Вход Выход
[latex]a_x[/latex] [latex]a_y[/latex] [latex]a_z[/latex] [latex]b_x[/latex] [latex]b_y[/latex] [latex]b_z[/latex] [latex]c_x[/latex] [latex]c_y[/latex] [latex]c_z[/latex] [latex]S[/latex]
1 -3 3 3 3 -3 3 3 3 -3 69.3607
2 -1 1 1 1 -1 1 1 1 -1 7.70674
3 -2 2 2 2 -2 2 2 2 -2 30.827
4 0 0 1 1 0 0 1 1 -1 2.07313

Код на C++:

Код на Java:

Решение:
Координаты векторов находим по формуле:
[latex] \overrightarrow{A_2A_4}=(c_x-a_x,c_y-a_y,c_z-a_z) [/latex] здесь [latex] a_x, a_y, a_z[/latex] — координаты точки [latex]A_2[/latex]; [latex]c_x, c_y, c_z[/latex] — координаты точки [latex]A_4[/latex];
Таким же образом находим остальные координаты векторов.
Модули векторов (длина ребер пирамиды)
Длина вектора [latex]\overrightarrow{a}(a_x;a_y;a_z)[/latex] выражается через его координаты формулой:
[latex] \left| \overrightarrow{A_1A_2} \right| =\sqrt { ({ a_x) }^{ 2 }+({ a_y) }^{ 2 }+({ a_z) }^{ 2 } } [/latex];
Таким же способом находим другие модули векторов.
Площадь грани можно найти по формуле:
[latex] s_1=\frac { 1 }{ 2 } \vec{A_1} \times \vec{A_2} \sin \angle{A_2A_3} [/latex] где
[latex] \sin \angle{ A_2A_3 =\sqrt { 1-{ (\cos \angle{ A_2A_3) } }^{ 2 } } } [/latex] Так же будем находить и другие.
Найдем угол между ребрами [latex] A_1A_2(a_x;a_y;a_z) [/latex] и [latex] A_1A_3(b_x;b_y;b_z) [/latex]:
[latex] \cos \angle{ A_2A_3 =\frac { a_x b_x+a_y b_y+a_z b_z }{ \left| A_2A_3 \right| } } [/latex] Так мы найдём и другие 3 площади граней.
Площадь полной поверхности.
[latex] s=s_1+s_2+s_3+s_4. [/latex]

Ссылки:

Онлайн компилятор ideone C++ .
Онлайн компилятор ideone Java .
Онлайн калькулятор .

Алла Марокко
Алла Марокко

Latest posts by Алла Марокко (see all)

7 thoughts on “ML29. Площадь тетраэдра

  1. — Тесты готовят до написания программы и разместить их нужно до кода.
    — Необходимо добавить описание решения.
    — Вы забыли про ключевые слова (метки).
    — Постоянная ссылка на статью (адрес) содержит символы кириллицы. Это нежелательно. Вполне достаточно указать ML29.
    — Ваш рисунок тетраэдра требует пяти обычных отрезков и одного пунктирного. Конечно, придётся нарисовать на листочке 4 точки и придумать им координаты. Вместо этого Вы видимо нарисовали что-то мышкой в растровом формате и конвертировали его в SVG. Если Вы откроете свой рисунок в текстовом редакторе (например, notepad), то ломанные линии с многими сотнями точек. Удалите их и напишите либо 6 отрезков, либо отрезок и ломанную по своим координатам. Здесь написано как это сделать.

  2. Хорошо. Программа похоже работает верно.
    По технике выполнения рисунка замечаний больше нет. Есть замечания по сути.
    — Вы оставили двухмерную систему координат из образца и дорисовали трехмерный рисунок. Даже начала координат у них не совпадают. простейший способ избавиться от противоречия — убрать лишнее.
    — Все надписи должны быть выполнены в таком стиле, как обозначения осей координат. Сейчас обозначения векторов на рисунке и в тексте различаются по начертанию.
    — По коду тоже есть замечание. Вам не захотелось сделать вспомогательную функцию чтобы не писать много раз похожий код?
    — Зачем Вы постоянно отнимаете ноль? Зачем вычислять координаты векторов если они заданы в условии?
    — У вас какой-то мусор в тексте — вдруг какой-то нолик болтается или буква «в».
    — Если Вы хотите нумеровать абзацы (например, собираетесь на эти номера ссылаться), то лучше это делать при помощи кнопок OL (ordered list) и LI (list item) или просто указывая соответствующие теги в тексте.
    — Вам не кажется, что подпись «Рисунок» возле рисунка не несёт дополнительной информации?
    В самом конце работы написано «Условие задачи ML29». Зачем? Условие ведь приведено в самом начале.
    — В самом конце вы даёте ссылку не на свой кода на ideone.com, а на главную страницу сайта. Исправьте, пожалуйста.
    — Вы иногда не включаете нижние индексы. Например, [latex]s1[/latex] вместо [latex]S_{1}[/latex].
    — Посмотрите здесь как обозначаются углы и скалярные произведения.
    Постоянная ссылка на статью (адрес) содержит символы кириллицы. Это нежелательно. Вполне достаточно указать ML29.

  3. Извините, мне почти невозможно комментировать каждый ошибочный символ более детально, чем я делал до сих пор. Либо прочтите свой текст и комментарии, либо подойдите на консультацию в субботу или после любой нашей пары — буду показывать пальцем.

      • — Жаль с функциями не вышло — много повторяющегося кода. Но уж ладно.
        — Я проверил в Google, эта Ваша загадочная фраза «добавим математические операции» нигде больше в Интернете не встречается. Нужно поставить копирайт, пока не разошлось по сети 🙂
        — Точки на рисунке должны быть обозначены так, как в тексте — [latex]A_1, A_2, A_3, A_4.[/latex]

Добавить комментарий