Форум программистов, компьютерный форум CyberForum.ru

Найти координаты основания высоты. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.91
JuliaDulceFlor
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 36
28.09.2010, 16:45     Найти координаты основания высоты. #1
Задача: Треугольник задается координатами своих вершин на плоскости: А(x1, y1), B(x2, y2), C(x3, y3). Найти длину и координаты основание высоты, опущенной из вершины А на сторону ВС.

Саму высоту нашла, но координаты не могу.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2010, 16:45     Найти координаты основания высоты.
Посмотрите здесь:

В треугольнике найти длину и координаты основания высоты, опущенной из вершины А на сторону ВС C++
C++ Найти объем, массу и площадь основания цилиндрического слитка
C++ Найти объем V, массу m, и площадь S основания слитка
Заданы координаты точки подвеса математического маятника A(xa, ya, za) и координаты одной из точек его наивысшего подъема B(xb, yb, zb). Найти координ C++
Даны основания и высоты двух равнобедренных трапеций C++
C++ Даны основания и высоты 2-х равнобедренных трапеций. Найти сумму их периметров.
Найти максимальное значение радиуса шара r и соответствующие значения радиуса основания r3 и высоты h шарового сектора C++
Найти координаты точки пересечения высоты AH и высоты BG треугольника C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TheMachinist
 Аватар для TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
28.09.2010, 17:37     Найти координаты основания высоты. #2
y = By - (Ay / 2)
x = Ax + (Cx-Ax) / 2

это если Dy > Ay и Cx > Ax
Mr.X
Эксперт С++
 Аватар для Mr.X
2803 / 1579 / 247
Регистрация: 03.05.2010
Сообщений: 3,667
29.09.2010, 19:18     Найти координаты основания высоты. #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
///////////////////////////////////////////////////////////////////////////////
//Треугольник задается координатами своих вершин на плоскости: 
//А(x1, y1), B(x2, y2), C(x3, y3). Найти длину и координаты основания высоты, 
//опущенной из вершины А на сторону ВС.
///////////////////////////////////////////////////////////////////////////////
#include <complex>
#include <iostream>
///////////////////////////////////////////////////////////////////////////////
typedef double                 T_coord;
typedef std::complex<T_coord>  T_point;
///////////////////////////////////////////////////////////////////////////////
bool  vectors_are_equally_directed(const T_point& V1, const T_point& V2)
{    
    if(abs(V1) * abs(V2) == 0) return true;    
    return  arg(V1 / V2) == 0;     
}
///////////////////////////////////////////////////////////////////////////////
void get_altitude_AK
    (
        T_point   A, 
        T_point   B, 
        T_point   C, 
        T_point&  K, 
        T_coord&  altitude_len
    )
{
    //Так как основание K высоты AK лежит на прямой BC, то точку K можно 
    //представить в виде:
    //K = B + a * BC,                                                (1)
    //где a - действительное.
    //Тогда AK = K - A = B + a * BC - A = AB + a * BC.
    //Так как векторы AK и BC перпендикулярны, а при делении комплексных чисел
    //их аргументы (углы) вычитаются, то частное AK/BC или (AB + a * BC)/BC 
    //или (AB / BC + a) будет иметь аргумент, равный по модулю 90 градусов, т.е.
    //будет числом чисто мнимым. Следовательно (AB / BC).real() + a = 0, откуда
    // a = -(AB / BC).real().    
    //Тогда из (1) получим:    
    T_point  AB = B - A;
    T_point  BC = C - B;
    K = B - (AB/BC).real() * BC;
    T_point  AK = K - A;
    altitude_len = abs(AK);
}
///////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    std::cout << "Введите координаты вершин треугольника: "
              << std::endl; 
 
    T_coord  Ax;
    std::cout << "Ax = ";
    std::cin >> Ax;
    T_coord  Ay;
    std::cout << "Ay = ";
    std::cin >> Ay;
    T_point A(Ax, Ay);
 
    T_point B;    
    do
    {
        T_coord  Bx;
        std::cout << std::endl
                  << "Bx = ";
        std::cin >> Bx;
        T_coord  By;
        std::cout << "By = ";
        std::cin >> By;
        B = T_point(Bx, By);        
    }while(B == A);    
 
    T_point  C;
    T_point  AB;
    T_point  AC;
    do
    {
        T_coord  Cx;
        std::cout << std::endl
                  << "Cx = ";
        std::cin >> Cx;
        T_coord  Cy;
        std::cout << "Cy = ";
        std::cin >> Cy;
        C = T_point(Cx, Cy);
 
        AB = B - A;
        AC = C - A;        
    }while(vectors_are_equally_directed(AB, AC)//Векторы AB и ± AC 
           || vectors_are_equally_directed(AB, -AC));//напривлены одинаково.
    T_point  K;
    T_coord  altitude_len = 0;
    get_altitude_AK(A, B, C, K, altitude_len);
    std::cout << "Высота AK треугольника имеет длину "
              << altitude_len
              << ", а точка K имееет координаты "
              << K
              << "."
              << std::endl;              
}
Yandex
Объявления
29.09.2010, 19:18     Найти координаты основания высоты.
Ответ Создать тему
Опции темы

Текущее время: 16:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru