Найти расстояние от заданной точки до заданного треугольника на плоскости - C (СИ)

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

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

Найти расстояние от заданной точки до заданного треугольника на плоскости.

Решение задачи: «Найти расстояние от заданной точки до заданного треугольника на плоскости»

textual
Листинг программы
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
 
int main()
{
double A,B,C,D,x1,x2,x3,y1,y2,y3,z1,z2,z3,nx,ny,nz;
double dist;
printf("Enter x1,y1,z1 :");
scanf("%lf,%lf,%lf",&x1,&y1,&z1);
printf("Enter x2,y2,z2 :");
scanf("%lf,%lf,%lf",&x2,&y2,&z2);
printf("Enter x3,y3,z3 :");
scanf("%lf,%lf,%lf",&x3,&y3,&z3);
printf("Enter nx,ny,nz :");
scanf("%lf,%lf,%lf",&nx,&ny,&nz);
 
A=y1*(z2-z3)+y2*(z3-z1)+y3*(z1-z2);
B=x1*(z3-z2)+x2*(z1-z3)+x3*(z2-z1);
C=x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2);
D=-x1*A-y1*B-z1*C;
 
if(A==0&&B==0&&C==0)
{
    printf("error");
    return 0;
}
 
printf("A=%.3lf,B=%.3lf,C=%.3lf,D=%.3lf\n",A,B,C,D);
dist=fabs(A*nx+B*ny+C*nz+D)/sqrt(A*A+B*B+C*C);
 
printf("Distance=%.3lf\n",dist);
 
return 0;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы
  2. Определяются переменные типа double для хранения координат точек и вектора нормали
  3. Выводится приглашение для ввода координат барицентр и координат вершин треугольника
  4. Считываются значения координат с помощью функции scanf
  5. Вычисляются значения векторов A, B, C и D с помощью формул (A=cross(v2-v1, v3-v1), B=cross(v3-v1, v1-v2), C=cross(v1-v2, v3-v1))
  6. Проверяется условие, при котором все координаты равны нулю (в случае ошибки выводится сообщение error)
  7. Выводятся значения векторов A, B, C и D
  8. Вычисляется расстояние от заданной точки до треугольника по формуле dist=|(Anx+Bny+Cnz+D)/sqrt(AA+BB+CC)|
  9. Выводится значение расстояния
  10. Завершается выполнение программы

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


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

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

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