Перейти к содержанию

Подскажите как найти в С/С++ площадь треугольника по координатам его вершины ?


Рекомендуемые сообщения

Это все из тех же задач:

Зная координаты вершин треугольника определить принадлежность к ним четвертой точки))

Т.е. если сложить площади 3 треугольников и сравнить их с площадью исходного треугольника то можно получить искомый ответ)) остается только вычислить эти самые площади треугольников, кто нибудь знает как???

Ссылка на комментарий

Площадь Треугольника через три точки a(x1,y1), b(x2,y2), c(x3,y3):

S = |x1(y2-y3)+x2(y3-y1)+x3(y1-y2)|/2

вот еще нарыл способ

Вот оччень простая демонстрация без всяких там площадей и сложных вычеслений(которые кстати тоже "отвлекают" сопроц).

IsBelow(x0, y0, x1, y1, x2, y2)-определяет, с какой стороны от прямой находится точка(отдельно употребляется очень редко).

InTriangle(x0, y0, x1, y1, x2, y2, x3, y3)-самый точный и самый быстрый способ определить находится ли точка (х0, у0) в данном треугольнике ((x1,y1), (x2,y2), (x3,y3)).


Return Sgn((x1-x0)*(y1-y2)+(y1-y0)*(x2-x1))
End Function

Function InTriangle(x0, y0, x1, y1, x2, y2, x3, y3)
If IsBelow(x0, y0, x2, y2, x1, y1)*IsBelow(x0, y0, x2, y2, x3, y3)>0 Return 0
If IsBelow(x0, y0, x1, y1, x2, y2)*IsBelow(x0, y0, x1, y1, x3, y3)>0 Return 0
If IsBelow(x0, y0, x3, y3, x2, y2)*IsBelow(x0, y0, x3, y3, x1, y1)>0 Return 0
Return 1
End Function
Function IsBelow(x0, y0, x1, y1, x2, y2)

надеюсь, на плюсы переписать не составит труда

Ссылка на комментарий

bula3

Вообще на той олимпиаде мы решали через способ указанный Maru. тоесь смотрим находится ли заданная точка по одну сторону с противоположной вершиной от прямой проведенной через две оставшиеся вершины.

Ссылка на комментарий

Курс ангема давно был?

Лезем на википедию и читаем.

К стати, эта чудо-формула площади по трем точкам и есть векторное произведение в двумерном случае.

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...