Да тут нет никакого алгоритма, вот что достадно! ;)
Короче таких классов в PHP я никогда в жизни не видел, и гугол о них не знает, особенно про Point. Может быть и есть какие-то хитрые решения, но судя по постановке задачи она тянет на школу, класс так 8 или 9.
По координатам можно найти длины всех сторон по формуле. Далее находим углы, тоже по формуле, через известные стороны. Высота проведенная из большего угла лежит внутри треугольника. Поэтому решение:
<?php
$a = [0, 0];
$b = [2, 4];
$c = [-3, 2];
$ab = sqrt(pow($b[0]-$a[0], 2) + pow($b[1]-$a[1], 2));
$ac = sqrt(pow($c[0]-$a[0], 2) + pow($c[1]-$a[1], 2));
$bc = sqrt(pow($c[0]-$b[0], 2) + pow($c[1]-$b[1], 2));
$angles = [];
$alpha = (pow($ab, 2) + pow($ac, 2) - pow($bc, 2))/(2*$ab*$ac);
$angles['a'] = acos($alpha);
$betta = (pow($ab, 2) + pow($bc, 2) - pow($ac, 2))/(2*$ab*$bc);
$angles['b'] = acos($betta);
$gamma = (pow($ac, 2) + pow($bc, 2) - pow($ab, 2))/(2*$bc*$ac);
$angles['c'] = acos($gamma);
arsort($angles);
reset($angles);
$first_key = key($angles);
switch ($first_key) {
case 'a':
echo $ac * sin($angles['c']);
break;
case 'b':
echo $ab * sin($angles['a']);
break;
case 'c':
echo $ac * sin($angles['a']);
break;
}
Вычисления идут в радианах. Закомментированные строки то же самое, только через другую сторону и угол. Используется определение синуса острого угла для прямоугольного треугольника.
Всё. Задача чисто математическая, в ней алгоритмики НОЛЬ!
ТС, учти, задавать чисто математические задачи программистам довольно непрактично. Мы мастера логических задач и искусства декомпозиции.