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

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

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

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

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

textual
Листинг программы
struct vec
{
 float x1;
 float y1;
 float z1;
 float x2;
 float y2;
 float z2;
};
stuct point
{
 float x;
 float y;
 float z;
}
int check (vec v, point p)
{
 float kx;
 float ky;
 float kz; 
 float t;
 if (v.x2==v.x1)
 {
  kx=0.0f;
 }
 else
 {
  kx=1.0f/(v.x2-v.x1);
 }
 if (v.y2==v.y1)
 {
  ky=0.0f;
 }
 else
 {
  ky=1.0f/(v.y2-v.y1);
 }
 if (v.z2==v.z1)
 {
  kz=0.0f;
 }
 else
 {
  kz=1.0f/(v.z2-v.z1);
 }
 if ((v.x2==v.x1)&&(v.y2==v.y1)&&(v.z2==v.z1))
 {
  if ((p.x==v.x1)&&(p.y==v.y1)&&(p.z==v.z1))
  {
   return 1;
  }
  return 0;
 }
 if ((fabs(v.x2-v.x1)>=fabs(v.y2-v.y1))&&(fabs(v.x2-v.x1)>=fabs(v.z2-v.z1))
 {
  t=(p.x-v.x1)*kx;
  if (v.y2!=v.y1)
  {
   if (((p.y-v.y1)*ky)!=t)
   {
    return 0;
   }
  } 
  else
  {
   if (p.y!=v.y1)
   {
    return 0;
   }
  }
  if (v.z2!=v.z1)
  {
   if (((p.z-v.z1)*kz)!=t)
   {
    return 0;
   }
  } 
  else
  {
   if (p.z!=v.z1)
   {
    return 0;
   }
  }
  return 1;
 }
 if ((fabs(v.y2-v.y1)>=fabs(v.x2-v.x1))&&(fabs(v.y2-v.y1)>=fabs(v.z2-v.z1))
 {
  t=(p.y-v.y1)*ky;
  if (v.x2!=v.x1)
  {
   if (((p.x-v.x1)*kx)!=t)
   {
    return 0;
   }
  } 
  else
  {
   if (p.x!=v.x1)
   {
    return 0;
   }
  }
  if (v.z2!=v.z1)
  {
   if (((p.z-v.z1)*kz)!=t)
   {
    return 0;
   }
  } 
  else
  {
   if (p.z!=v.z1)
   {
    return 0;
   }
  }
  return 1;
 }
 t=(p.z-v.z1)*kz;
 if (v.x2!=v.x1)
 {
  if (((p.x-v.x1)*kx)!=t)
  {
   return 0;
  }
 } 
 else
 {
  if (p.x!=v.x1)
  {
   return 0;
  }
 }
 if (v.y2!=v.y1)
 {
  if (((p.y-v.y1)*ky)!=t)
  {
   return 0;
  }
 } 
 else
 {
  if (p.y!=v.y1)
  {
   return 0;
  }
 }
 return 1;
}

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


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

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

14   голосов , оценка 4.357 из 5
Похожие ответы