В этом трианге:
Зная площади треугольников UPZ ZPW и WPY, как вычислить общую площадь?
Я уже нашел решение из доступных представлений на веб-сайте. Но я хочу знать, как получить это решение.
cin >> a >> b >> c;
// a is UPZ, b is ZPW, c is WPY
double n = b*(a+b)*(a+b+c);
double d = b*(a+b)-(a*c);
cout << (n / d) ;





Действительно, этот вопрос немного не по теме, это проблема геометрии. Способ найти площадь большого треугольника UVW состоит в том, чтобы применить связь между площадями и отношениями длин сегментов треугольника UYW, а затем применить теорему Менелая для вывода отношения WY/WV, который показывает отношение между площадями треугольника UYW и UVW.
Пусть h_p будет длиной высоты от точки P до ребра UW. потом
a = UZ * h_p / 2 and b = ZW * h_p / 2
Таким образом:
a / b = (UZ * h_p / 2) / (ZW * h_p / 2) = UZ / ZW
Пусть h_W — длина высоты от точки W до прямой UY.
a + b = Area(WPU) = PU * h_W / 2 and c = YP * h_w / 2
Таким образом:
c / (a + b) = (YP * h_W / 2) / (PU * h_W / 2) = YP / PU
По теореме Менелая для треугольника UWY и прямой VZ с P на VZ получаем:
1 = ( VW / VY ) * ( YP / PU ) * ( UZ / ZW ) = ( VW / WY ) * (c / (a + b)) * (a / b)
so
VY / VW = (c * a) / ( b * (a + b))
и поэтому:
WY / VW = 1 - (VY / VW) = 1 - (c*a) / ( b*(a + b)) = (a*b + b^2 - a*c ) / (a*b + b^2)
Пусть h_U — длина высоты от точки U до ребра VW. потом
Area(UVW) = VW * h_U / 2
and
Area(UYW) = a + b + c = WY * h_U / 2
Следовательно
Area(UVW) / Area(UYW) = Area(UVW) / (a + b + c) = (VW * h_U / 2) / (WY * h_U / 2) = VW / WY
так
Area(UVW) / Area(UYW) = VW / WY = (a*b + b^2) / (a*b + b^2 - a*c)
Area(UVW) / Area(UYW) = Area(UVW) / (a + b + c) = (a*b + b^2) / (a*b + b^2 - a*c)
В итоге получаем формулу:
Area(UVW) = (a + b + c) * (a*b + b^2) / (a*b + b^2 - a*c)
Area(UVW) = b * (a + b) * (a + b + c) / (b*(a + b) - a*c)
Я голосую за то, чтобы закрыть этот вопрос как не по теме, потому что это вопрос математики, а не вопрос компьютерного программирования.