Быстрый способ определить, является ли треугольник прямоугольным?

#r #dataframe

#r #фрейм данных

Вопрос:

В двумерной плоскости у меня есть координаты трех точек во фрейме данных df , например

 df1 <- data.frame(x = c(0,3,3),y = c(0,1,4))
df2 <- data.frame(x = c(0,3,3),y = c(0,0,4))
  

Есть ли быстрый способ определить, является ли треугольник прямоугольным? Большое спасибо!

Ответ №1:

Надеюсь, это легко, вы хотите

 isRectTriangle <- function(df) isTRUE(all.equal(max(d <- c(dist(df))), norm(d[-which.max(d)],"2"),))
  

где для оценки применяется функция, определенная с помощью dist и теоремы Пифагора.

Вы увидите

 > isRectTriangle(df1)
[1] FALSE

> isRectTriangle(df2)
[1] TRUE
  

Комментарии:

1. Округление будет проблемой: не сравнивайте реальные значения с == . all.equal() Функция выполняет приблизительное сравнение и имела бы больше смысла.

2. @user2554330 Спасибо за напоминание. Теперь это исправлено.