Нужна подфункция для проверки принадлежности точки отрезку - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день,нужна подфункция для проверки принадлежности точки отрезку на прямой отрезок задан 2 точками,значения хранятся в структуре vec в x1,y1,z1 и x2,y2,z2.Функция должна возвращать 1 или 0.Помогите с написанием на Си или хотя бы с формулой

Решение задачи: «Нужна подфункция для проверки принадлежности точки отрезку»

textual
Листинг программы
  1. struct vec
  2. {
  3.  float x1;
  4.  float y1;
  5.  float z1;
  6.  float x2;
  7.  float y2;
  8.  float z2;
  9. };
  10. stuct point
  11. {
  12.  float x;
  13.  float y;
  14.  float z;
  15. }
  16. int check (vec v, point p)
  17. {
  18.  float kx;
  19.  float ky;
  20.  float kz;
  21.  float t;
  22.  if (v.x2==v.x1)
  23.  {
  24.   kx=0.0f;
  25.  }
  26.  else
  27.  {
  28.   kx=1.0f/(v.x2-v.x1);
  29.  }
  30.  if (v.y2==v.y1)
  31.  {
  32.   ky=0.0f;
  33.  }
  34.  else
  35.  {
  36.   ky=1.0f/(v.y2-v.y1);
  37.  }
  38.  if (v.z2==v.z1)
  39.  {
  40.   kz=0.0f;
  41.  }
  42.  else
  43.  {
  44.   kz=1.0f/(v.z2-v.z1);
  45.  }
  46.  if ((v.x2==v.x1)&&(v.y2==v.y1)&&(v.z2==v.z1))
  47.  {
  48.   if ((p.x==v.x1)&&(p.y==v.y1)&&(p.z==v.z1))
  49.   {
  50.    return 1;
  51.   }
  52.   return 0;
  53.  }
  54.  if ((fabs(v.x2-v.x1)>=fabs(v.y2-v.y1))&&(fabs(v.x2-v.x1)>=fabs(v.z2-v.z1))
  55.  {
  56.   t=(p.x-v.x1)*kx;
  57.   if (v.y2!=v.y1)
  58.   {
  59.    if (((p.y-v.y1)*ky)!=t)
  60.    {
  61.     return 0;
  62.    }
  63.   }
  64.   else
  65.   {
  66.    if (p.y!=v.y1)
  67.    {
  68.     return 0;
  69.    }
  70.   }
  71.   if (v.z2!=v.z1)
  72.   {
  73.    if (((p.z-v.z1)*kz)!=t)
  74.    {
  75.     return 0;
  76.    }
  77.   }
  78.   else
  79.   {
  80.    if (p.z!=v.z1)
  81.    {
  82.     return 0;
  83.    }
  84.   }
  85.   return 1;
  86.  }
  87.  if ((fabs(v.y2-v.y1)>=fabs(v.x2-v.x1))&&(fabs(v.y2-v.y1)>=fabs(v.z2-v.z1))
  88.  {
  89.   t=(p.y-v.y1)*ky;
  90.   if (v.x2!=v.x1)
  91.   {
  92.    if (((p.x-v.x1)*kx)!=t)
  93.    {
  94.     return 0;
  95.    }
  96.   }
  97.   else
  98.   {
  99.    if (p.x!=v.x1)
  100.    {
  101.     return 0;
  102.    }
  103.   }
  104.   if (v.z2!=v.z1)
  105.   {
  106.    if (((p.z-v.z1)*kz)!=t)
  107.    {
  108.     return 0;
  109.    }
  110.   }
  111.   else
  112.   {
  113.    if (p.z!=v.z1)
  114.    {
  115.     return 0;
  116.    }
  117.   }
  118.   return 1;
  119.  }
  120.  t=(p.z-v.z1)*kz;
  121.  if (v.x2!=v.x1)
  122.  {
  123.   if (((p.x-v.x1)*kx)!=t)
  124.   {
  125.    return 0;
  126.   }
  127.  }
  128.  else
  129.  {
  130.   if (p.x!=v.x1)
  131.   {
  132.    return 0;
  133.   }
  134.  }
  135.  if (v.y2!=v.y1)
  136.  {
  137.   if (((p.y-v.y1)*ky)!=t)
  138.   {
  139.    return 0;
  140.   }
  141.  }
  142.  else
  143.  {
  144.   if (p.y!=v.y1)
  145.   {
  146.    return 0;
  147.   }
  148.  }
  149.  return 1;
  150. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.357 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы