Найти координаты базовых вершин равнобедренного треугольника с заданной высотой, координатой верхней вершины и всеми длинами сторон - PullRequest
0 голосов
/ 29 апреля 2019

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

Я разделил равнобедренный треугольник на две половины.Работая с одной половиной, у меня есть длина трех сторон, чтобы быть A, B и C, где C - гипотенуза, B - высота, и A - основание (половины равнобедренного треугольника).Я получил C от A и B, используя правило Пифагора.Поскольку я знаю C и знаю координаты верхней вершины (то есть точки, где встречаются B и C), я пытаюсь вернуться назад, используя правило Пифагора / норма / евклидово расстояние, чтобы найти координаты точки, где встречаются C и A,Это приводит к двум квадратным уравнениям после приравнивания x-членов к 0, а затем y-членов к 0. Решая каждое квадратное уравнение, используя квадратную формулу, я получаю два результата каждый для координат x и y обеих базовых вершин полного равнобедренного треугольника,Проблема сейчас в том, что возвращение вычисленных координат x и y в исходную евклидову формулу расстояния / нормы / правила не дает мне первоначальное значение «C», которое я использовал для создания квадратных уравнений.Поскольку равнобедренный треугольник наклонен в двумерной системе координат, x-координаты и y-координаты обеих базовых вершин будут различаться, поэтому необходимы строки кода 8,9,17 и 18. Печать строк 21 и 22Предполагается, чтобы дать мое первоначальное значение C в обоих случаях, но они не дают.Может кто-нибудь помочь?

    a_x = 1
    b_x = (-2 * point[0])                   # point[0] = x-coordinate of point
    c_x = point[0]**2 + point[1]**2 - C**2  # point[1] = y-coordinate of point
    d_x = (b_x**2) - (4 * a_x * c_x)
    sqr_d_x = cmath.sqrt(d_x)               # Takes the square root of d_x

    x_1 = (-b_x - sqr_d_x)/(2 * a_x)        #Sol 1,x-coordinate of base vertice
    x_2 = (-b_x + sqr_d_x)/(2 * a_x)        #Sol 2,x-coordinate of base vertice

    Pw_x = min(x_1,x_2)              # Since isosceles triangle is slanted on 2D space 
    Pz_x = max(x_1,x_2)

    a_y = 1
    b_y = (-2 * point[1])
    c_y = point[0]**2 + point[1]**2 - C**2
    d_y = (b_y**2) - (4 * a_y * c_y)
    sqr_d_y = cmath.sqrt(d_y)

    y_1 = (-b_y - sqr_d_y)/(2 * a_y)
    y_2 = (-b_y + sqr_d_y)/(2 * a_y)

    Pw_y = max(y_1,y_2)
    Pz_y = min(y_1,y_2)

    Pw = (Pw_x,Pw_y)         # left base vertice
    Pz = (Pz_x,Pz_y)         # right base vertice

    print(cmath.sqrt((point[0] - Pw_x)**2 + (point[1] - Pw_y)**2))
    print(cmath.sqrt((point[0] - Pz_x)**2 + (point[1] - Pz_y)**2))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...