IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Треугольник с медианами!, SOS =)
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Макс

Репутация: -  0  +


Привет всем!

По заданным координатам вершин А, В и С треугольника найти его сумму длин медиан. Изобразить треугольник на экране с медианами.

Помогите чем нить!! Особенно как всё это дело изобразить не очень ясно!! С помощью класса TCanvas или как?!

Сообщение отредактировано: mahmut -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






mahmut, курс геометрии средней школы:
длина медианы, проведенной к стороне A равна:
Цитата
Ma = Sqrt(2 * (b^2 + c^2) - a^2) / 2;

для остальных медиан - по тому же принципу... Длину каждой стороны по заданным координатам вершин найти, я думаю, сможешь...

Отрисовываешь на канве (MoveTo, LineTo)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Прогрессор
****

Группа: Пользователи
Сообщений: 602
Пол: Мужской
Реальное имя: Михаил

Репутация: -  9  +


формула есть:Длина медиана, проведённой к стороне c, равна половине квадратного корня из (2a^2 + 2b^2 - c^2)
А рисовать, действительно, проще всего по канве. (например, TImage или TPaintBox) Находишь координаты середин сторон, и просто проводишь шесть линий - треугольник с медианами готов

huh.gif smile.gif В который раз запоздал с ответом...

З.Ы. и главное, в трёхсотом сообщении... huh.gif


Сообщение отредактировано: Atos -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Макс

Репутация: -  0  +


Цитата(Atos @ 21.10.2005 18:55)
формула есть:Длина медиана, проведённой к стороне c, равна половине квадратного корня из (2a^2 + 2b^2 - c^2)
А рисовать, действительно, проще всего по канве. (например, TImage или TPaintBox) Находишь координаты середин сторон, и просто проводишь шесть линий - треугольник с медианами готов

huh.gif  smile.gif В который раз запоздал с ответом...

З.Ы. и главное, в трёхсотом сообщении... huh.gif



Да это то всё ясно... sad.gif
Вот тут чаво то не очень работает! Не подскажите где я тута накосячил!! И ещё был бы рад примерчику хотя бы как нарисовать треугольник!!!

Код

procedure TForm4.Label12Click(Sender: TObject);

var
x1, y1, x2, y2, x3, y3: real;{корни уравнения}
s1, s2, s3: string[7];
code: integer;
ma,mb,mc: double;
dda,ddb,ddc: double;
Begin
        {ввод исходных данных из полей редактирования}
           val(edit1.text,x1,code);
        val(edit2.text,y1, code);
           val(edit1.text,x2,code);
        val(edit2.text,y2, code);
           val(edit1.text,x3,code);
        val(edit2.text,y3, code);
         dda := sqrt(((x2-x1)*(x2-x1))-((y2-y1)*(y2-y1)));
         ddb := sqrt(((x3-x2)*(x3-x2))-((y3-y2)*(y3-y2)));
         ddc := sqrt(((x1-x3)*(x1-x3))-((y1-y3)*(y1-y3)));

                str(dda,s1);
                str(ddb,s2);
                str(ddc,s3);
       Label1.caption:='Корни уравнения'
       +chr(13)+'dda= ' + s1
       +chr(13)+'ddb= ' + s2
       +chr(13)+'ddc= ' + s3;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






mahmut blink.gif а попроще (что-то в таком духе):
function get_side(xst, yst, xfn, yfn: double): double;
begin
result := sqrt(sqr(xst - xfn) + sqr(yst - yfn));
end;
function mediana(side_a, side_b, against: double): double;
begin
result := sqrt(2 * (sqr(side_a) + sqr(side_b)) - sqr(against)) / 2;
end;

procedure TForm.get_medians;
var
len_a, len_b, len_c: double;
sum: double;
begin
len_a := get_side(strtofloat(edit1.text), strtofloat(edit2.text),
strtofloat(edit3.text), strtofloat(edit4.text));
len_b := get_side(strtofloat(edit3.text), strtofloat(edit4.text),
strtofloat(edit5.text), strtofloat(edit6.text));
len_с := get_side(strtofloat(edit5.text), strtofloat(edit6.text),
strtofloat(edit1.text), strtofloat(edit2.text));
sum := mediana(len_b, len_c, len_a) + // медиана к стороне А
mediana(len_a, len_c, len_b) + // к стороне В
mediana(len_a, len_b, len_c); // к стороне С

{ вывод суммы медиан куда нужно... }
end;

только на форме у тебя должны быть не 2 Edit-а, а 6 (1 и 2 содержат X, Y координаты вершины A; 3 и 4 - для вершины B; ну, а 5 и 6 - для C соответственно)...

Как нарисовать треугольник сейчас покажу...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Например, вот так: Прикрепленный файл  triangle.rar ( 2.91 килобайт ) Кол-во скачиваний: 463

Тестировалось с такими значениями:
точка A: (10, 10)
точка B: (10, 2)
точка C: (2, 5)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Макс

Репутация: -  0  +


Спасибо, огромное! rolleyes.gif Обучил не грамотного!! smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 18.04.2024 13:43
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name