Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Геометрия c TPointF. Как правильно использовать CrossProduct, DotProduct  [new]
hottabych31
Member

Откуда:
Сообщений: 81
Всем привет!

Пишу тут небольшую софтину для работы с геометрией. Постоянно затыки с точностью расчетов. Использую для хранения точек TPointF.

Например, простейшая функция проверки принадлежности точки окружности: SameValue(x*x+y*y,r*r) возвращает false. А должно быть true.
Далее, принадлежность точки прямой - SameValue((p2-p1).CrossProduct(M-P1)) - аналогично.

Из ситуации вышел пока что заданием допустимой погрешности (0.5 в первом случае и 0.1 во втором).

Как поступить правильно?
4 окт 17, 11:51    [20841519]     Ответить | Цитировать Сообщить модератору
 Re: Геометрия c TPointF. Как правильно использовать CrossProduct, DotProduct  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43647

hottabych31
Как поступить правильно?

Задание погрешности это и есть самый правильный путь.

Posted via ActualForum NNTP Server 1.5

4 окт 17, 12:29    [20841704]     Ответить | Цитировать Сообщить модератору
 Re: Геометрия c TPointF. Как правильно использовать CrossProduct, DotProduct  [new]
hottabych31
Member

Откуда:
Сообщений: 81
Dimitry Sibiryakov,
Спасибо, буду писать больше тестов.
4 окт 17, 12:37    [20841735]     Ответить | Цитировать Сообщить модератору
 Re: Геометрия c TPointF. Как правильно использовать CrossProduct, DotProduct  [new]
roschinspb
Member

Откуда: С-Пб
Сообщений: 1453
hottabych31, там у TPointF есть метод EqualsTo
А для задания погрешности есть рекомендованные константы
System.Math.Vectors
  TEpsilon = record
  const
    Matrix = 1E-5;
    Vector = 1E-4;
  end;

FMX.Consts
  TEpsilonHelper = record helper for TEpsilon
  const
    Scale = 1E-4;
    FontSize = 1E-2;
    Position = 1E-3;
    Angle = 1E-4;
  end;
4 окт 17, 14:48    [20842352]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить