Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2016, 15:19   #31
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Вот вся математика в виде функции. На плюсы надеюсь переведешь. Проверь, может ошибся где-то в этих иксах и игреках )
Код:
type TMyVector = record x,y,z: Real; end;

function PointsOfLine(p1,p2,p3: TMyVector; Delta: Real): Boolean;
var r1,r2,r3,s,t: TMyVector;
    d: Real;
begin
  {r1,r2 - точки максимально удаленные}
  s.x:=(p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y)+(p1.z-p2.z)*(p1.z-p2.z);
  s.y:=(p1.x-p3.x)*(p1.x-p3.x)+(p1.y-p3.y)*(p1.y-p3.y)+(p1.z-p3.z)*(p1.z-p3.z);
  s.z:=(p2.x-p3.x)*(p2.x-p3.x)+(p2.y-p3.y)*(p2.y-p3.y)+(p2.z-p3.z)*(p2.z-p3.z);
  if      (s.x>=s.y) and (s.x>=s.z) then begin r1:=p1; r2:=p2; r3:=p3; end
  else if (s.y>=s.x) and (s.y>=s.z) then begin r1:=p1; r2:=p3; r3:=p2; end
                                    else begin r1:=p2; r2:=p3; r3:=p1; end;
  {s - направляющий вектор}
  s.x:=r2.x-r1.x;
  s.y:=r2.y-r1.y;
  s.z:=r2.z-r1.z;
  Result:=(s.x=0) and (s.y=0) and (s.z=0);
  if Result then Exit;
  {t - векторное произведение}
  t.x:=(r1.y-r3.y)*s.z-(r1.z-r3.z)*s.y;
  t.y:=(r1.x-r3.x)*s.z-(r1.z-r3.z)*s.x;
  t.z:=(r1.x-r3.x)*s.y-(r1.y-r3.y)*s.x;
  {квадрат расстояния}
  d:=(t.x*t.x+t.y*t.y+t.z*t.z)/(s.x*s.x+s.y*s.y+s.z*s.z);
  Result:=d<=Delta*Delta;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 16.12.2016 в 15:23.
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Точки, лежащие на одной прямой dimon_snake Паскаль, Turbo Pascal, PascalABC.NET 38 06.01.2016 21:01
Определить, лежат ли точки на одной прямой Паскаль anton.dasuik Помощь студентам 1 27.02.2013 22:52
Выяснить лежат ли точки на одной прямой commander_spock Помощь студентам 10 20.10.2010 14:44
Определить Лежат ли точки на одной прямой домик Помощь студентам 10 11.04.2010 20:12
Определить, лежат ли обе точки относительно прямой в одной полуплоскости - задача на С++. Wia Помощь студентам 4 21.12.2008 02:06