Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
public double GetParameter( Vector point )
{
Check.Require( !Direction.IsZeroLength, "Направление линии не должно быть вырожденным" );
var t = new List<double>( 2 );
// Параметры t по значимым осям
if( Op.Nz( Direction.X ) )
{
t.Add( ( point.X - Begin.X ) / Direction.X );
}
if( Op.Nz( Direction.Y ) )
{
t.Add( ( point.Y - Begin.Y ) / Direction.Y );
}
// Проверка на то что параметр t существует и корректен
Check.Ensure( t.Count > 0, "Если точка лежит на линии, то у нее должен быть определен параметр" );
Check.Ensure( Op.Eq( t.Max( ), t.Min( ) ), "Разброс значений параметра t не должен быть больше заданной точности" );
// Возвращаем среднее значение
return t.Average( );
}
Тестирование по спецификации