Проверка сходства треугольника в C - PullRequest
1 голос
/ 21 ноября 2011

Задача включает в себя создание двух треугольников, определяя их, используя точки, а затем проверяя, схожи ли они.

Я выполнил первую часть: создал точку структуры и треугольник структуры, как сказал нам профессор. Чтобы решить проблему проверки сходства, я подумал, что могу использовать точки для определения векторов, а они используют закон косинусов для вычисления его углов, а также некоторые предложения if для проверки того, что треугольники похожи.

Какие коды могут помочь мне достичь этого? Я не мог найти ничего, что смог бы превратить в частичное решение.

Ответы [ 2 ]

1 голос
/ 31 января 2012

Вам даны координаты всех трех точек каждого треугольника.Рассмотрим два треугольника T1 A (a1, a2) B (b1, b2) C (c1, c2), T2 P (p1, p2) Q (q1, q2) R (r1, r2).

  1. a = длина противоположной стороны вершины A
  2. b = длина противоположной стороны вершины B
  3. c = длина противоположной стороны вершины C

аналогично p, q, r треугольника T2

Итак, для того, чтобы два треугольника были похожи, он должен следовать следующим условиям

    1. AB = PQ; BC = QR; CA = RP 
       (We don't need their directions, So I am considering only magnitudes)

    2. angle (A) = angle(B)  i.e angle(BAC) = angle(QPR); 
       angle(B) = angle(Q)   i.e angle(CBA) = angle (RQP) and 
       angle(C) = angle(R).

ТеперьВы должны использовать здесь координатную геометрию / сферическую геометрию.

COS (A) = ( b^2 + c^2 - a^2 )/2bc
COS (B) = ( c^2 + a^2 - b^2 )/2ac
COS (C) = (a^2 +  b^2 - c^2)/2ab

Примечание: : Поскольку косинус периодичен с 2 * пи, пожалуйста, убедитесь, что у вас точный угол.Итак, почему бы вам не подумать об использовании обратных косинус-функций, где вы получаете принципиальные углы (я не уверен в них, как в том, как они работают. Пожалуйста, проверьте)

(Аналогично для P, Q, Rтреугольника T2).

На самом деле есть еще одно правило, по которому его легко сделать.закон: a/sin(A) = b/sin(B) = c/sin(C).

Я думаю, вы должны пройти Сферическая геометрия

Я надеюсь, что это поможет вам сделать программу.

Как сделать программу:

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

Если они удовлетворяют, они являются похожими треугольниками.

Надеюсь, это поможет вам.

1 голос
/ 21 ноября 2011

То, что вы сказали, делает трюк!

Для первого треугольника примите некоторые меры, например, как вы сказали: угол (или его косинус - легко вычислить с помощью точечного произведения) в любой вершине и длины сторон рядом с ней.

Для другого треугольника используйте условия if, чтобы увидеть, одинаков ли угол (или его косинус) и одинаковые ли соотношения длин. Вы должны выполнить эту проверку из всех трех вершин таким образом (если хотя бы один подходит, то треугольники похожи).

Более быстрый способ - всегда начинать с (например, вершины) с наименьшего угла, тогда вам нужно будет сравнить только один раз.

Теперь иди код! : -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...