ML 31. Площадь параллелепипеда

Условие задачи:

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

Входные данные:

Координаты векторов [latex] \overrightarrow{a}, \overrightarrow{b}[/latex] и [latex] \overrightarrow{c} [/latex].

Выходные данные:

Площадь полной поверхности параллелепипеда.

Тесты

Входные данные Выходные данные
1 -5.6 8.3 -7.1 2 11 -8 2.1 1 3.3 389.28894739406866
2 1 2 3 4 5 6 7 8 9 58.787753826796276
3 -9 2 4 -3 5 1 -6 7 8 305.5334243147188
4 1 1 1 1 1 1 1 1 1 0.0
5 0 0 1 0 1 0 1 0 0 6.0
6 0 0 0 1 0 0 0 0 1 2.0
7 1 0 0 0 0 1 0 0 1 2.0

 

Код на C++

Код на Java

Алгоритм

По определению Параллелепипед — призма, основанием которой служит параллелограмм, или (равносильно) многогранник, у которого шесть граней и каждая из них — параллелограмм.

Для решения данной задачи нужно сперва найти площади трёх сторон (параллелограммов) данного параллелепипеда. Воспользуемся геометрическим смыслом векторного произведения:

  • Модуль векторного произведения [latex] [\overrightarrow{a},\overrightarrow{b}] [/latex] равняется площади S параллелограмма, построенного на приведённых к общему началу векторах [latex]\overrightarrow { a }[/latex] и [latex]\overrightarrow { b } [/latex]

Рассчитаем площадь каждого параллелограмма по формуле [latex] \left|\left[ \overrightarrow { a } , \overrightarrow { b } \right]\right| =
\left|(a_{ y }b_{ z }-a_{ z }b_{ y }, a_{ z }b_{ x }-a_{ x }b_{ z }, a_{ x }b_{ y }-a_{ y }b_{ x })\right|[/latex].

Найдя все три стороны, получим площадь полной поверхности параллелепипеда по формуле

[latex] S=2*(S_1+S_2+S_3) [/latex], где [latex] S_n [/latex] — площадь стороны параллелепипеда.

 

Ссылки:

Условие задачи ML31.
Работающая версия программы на языке C++.
Работающая версия программы на языке Java.
Геометрические свойства векторного произведения.

 

Related Images:

Mif 17.15

Задача Mif17.15

Условие задачи

Принадлежит ли точка [latex](x, y)[/latex] фигуре на рисунке?

Viktoriya_Kudymovskaya (1)

Входные данные

В одной строке задано два числа – координаты точки latex[/latex].

Выходные данные

Вывести: «Принадлежит» или «Не принадлежит»(без кавычек).

Также условие задачи можно посмотреть здесь.

Тестирование

Входные данные Выходные данные
1. 1.5 7 Не принадлежит
2. 3 4 Не принадлежит
3. 2 -3.6 Принадлежит
4. 5 0 Принадлежит
5. 0 1 Не принадлежит
6. 0 -4 Не принадлежит
7. 3 3 Принадлежит
8. 2 3 Принадлежит

Реализация

Алгоритм решения

Пусть на плоскости дан треугольник [latex]ABC[/latex] с такими координатами вершин: [latex]A(x_1, y_1)[/latex], [latex]B(x_2, y_2)[/latex] и [latex]C(x_3, y_3)[/latex]. А  [latex]D(x, y)[/latex] — произвольная точка на координатной плоскости. Положим, [latex]A(x_1, y_1)[/latex], [latex]B(x_2, y_2)[/latex], [latex]C(x_3, y_3)[/latex] и [latex]D(x, y)[/latex] — векторы.

  1. Для того, чтобы точка [latex]D(x, y)[/latex] принадлежала данному треугольнику, необходимо, чтобы псевдоскалярное (косое) произведение соответствующих векторов было больше или же меньше нуля.
  2. Если векторы заданы своими координатами [latex]a(x_1, y_1), b(x_2, y_2)[/latex], то их косое произведение [latex][a,b]=x_1\cdot y_2 — x_2\cdot y_1[/latex]. Пользуясь данной формулой, запишем косое произведение векторов [latex]A(x_1, y_1)[/latex], [latex]B(x_2, y_2)[/latex] и [latex]D(x, y)[/latex]: [latex]k=x_1y_2 — x_2y_1 — x_1y + xy_1 + x_2y — xy_2=(x_1 — x)\cdot (y_2 — y_1) — (x_2 — x_1)\cdot (y_1 — y)[/latex].
  3. Далее запишем косое произведение векторов [latex]B(x_2, y_2)[/latex], [latex]C(x_3, y_3)[/latex] и [latex]D(x, y)[/latex]: [latex]m=x_2y_3 — x_3y_2 — x_2y + xy_2 + x_3y — xy_3=(x_2 -x)\cdot (y_ 3- y_2) — (x_3 — x_2)\cdot (y_2 — y)[/latex].
  4. Запишем косое произведение векторов [latex]A(x_1, y_1)[/latex], [latex]C(x_3, y_3)[/latex] и [latex]D(x, y)[/latex] : [latex]n=x_1y_3 — x_3y_1 — x_1y + xy_1 + x_3y — xy_3=(x_3 — x)\cdot (y_1 — y_3) — (x_1 — x_3)\cdot (y_3 — y)[/latex].
  5. Если [latex]k \leq 0 [/latex] и [latex]m \leq 0[/latex] и [latex]n \leq 0[/latex]  или [latex]k \geq 0[/latex] и [latex]m \geq 0[/latex] и [latex]n \geq 0[/latex], то делаем вывод: точка принадлежит треугольнику.
  6. Если ни одно из вышеуказанных условий не выполняется, то точка не принадлежит треугольнику.

Ознакомиться с теоретическим материалом можно здесь.

Для запроса на выполнение следует перейти по ссылке.

Related Images: