![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Maxim Razor |
![]() ![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Реальное имя: Max Репутация: ![]() ![]() ![]() |
задача по курсовой
По координатам трех точек построить треугольник (если это возможно, в про-тивном случае заново ввести координаты трех точек). Построить на чертеже треугольника все его медианы, биссектрисы, высоты, вписанную и описанную окружности. Рассчитать и вывести рядом с треугольником основные параметры (длины сторон, медиан, биссектрис, высот, радиусов вписанной и описанной окружностей). Построение и расчет характеристик делать одновременно: по-строить треугольник и вывести длины его сторон, начертить все медианы и вы-вести их длины и т.д. Вобщем с углами, сторонами, медианами и биссектрисами я вроде разобрался, насчёт высот - прошу проверить, мне кажется что не всё учтено. Просьба подсказать как находить центр описанной окружности, радиус и ценрт вписанной окружности. Не судите строго, просто я сам сейчас в 9 классе. Вот нароботки кода (если лучше его убрать в .txt файл, то скажите, я понимаю что он огромный): здесь я использую рандомное задание координат, чтобы профиксить все баги.
|
Bard |
![]()
Сообщение
#2
|
![]() Учиться, учиться еще раз учиться ![]() ![]() ![]() Группа: Пользователи Сообщений: 158 Пол: Мужской Реальное имя: Яшар Репутация: ![]() ![]() ![]() |
Ну пожалуй я тебе смогу помочь только формулами
![]() 1) r (вписанной) = (2*s)/Perimetr { s - площадь треугольника} 2) R (описанной) = (AB*BC*AC)/(PolPerimetr*s) { s - площадь треугольника} надеюсь что смог помочь ![]() -------------------- Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё |
Maxim Razor |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Реальное имя: Max Репутация: ![]() ![]() ![]() |
Спасибо! Насчёт радиуса помог, но как координаты этих центров найти?
|
Michael_Rybak |
![]()
Сообщение
#4
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Для вписанной. Смотри, для угла ВАС. Центр вписанной - точка Х пересечения биссектрис. Опускаем из нее перпендикуляр на АС в точку Н.
В треугольнике АХН ты знаешь катет (радиус) и угол (половина ВАС). Можешь вычислить второй катет АН, а значит и точку Н, а из нее - точку Х. Для описанной - аналогично, только в треугольнике ты сразу знаешь не угол и катет, а катет (половина стороны, т.к. центр описанной - точка пересечения серединных перпендикуляров) и гипотенузу (радиус описанной). |
Maxim Razor |
![]()
Сообщение
#5
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Реальное имя: Max Репутация: ![]() ![]() ![]() |
спасибо, поидее суть я понял, но вот мучает вопрос:
Как зная первую точку и дину отрезка найти вторую точку? |
compiler |
![]()
Сообщение
#6
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
Как зная первую точку и дину отрезка найти вторую точку? а ты не найдеш, у тебя будет круг(шар), где может находится точка... Сообщение отредактировано: compiler - 6.01.2008 14:04 -------------------- Спасибо!
Удачи! |
Maxim Razor |
![]()
Сообщение
#7
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Реальное имя: Max Репутация: ![]() ![]() ![]() |
Мне будет известен радиус, кроме него, для того чтобы построить окружость нужен и ценрт, допустим через советы Michael_Rybak я найду нужные стороны, но как найти точки?
|
Michael_Rybak |
![]()
Сообщение
#8
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Цитата Как зная первую точку и дину отрезка найти вторую точку? Ты знаешь луч АС, на котором находится точка Н, и тебе нужно отмерить расстояние АН. Для этого отложи единичный отрезок на АC, и умножь его на нужную длину: DX = (C.X - A.X) / AC DY = (C.Y - A.Y) / AY H.X = A.X + DX * AH H.Y = A.Y + DY * AH Или, если так понятнее: тебе нужна точка Н, которая делит отрезок АС в отношении АН ![]() Чтобы теперь найти центр, поступаем чуть хитрее: единичный отрезок, который был получен для АС, поворачиваем на 90 градусов: NEWDX = DY NEWDY = -DX Только теперь непонятно, в какую сторону откладывать радиус (умножать на +r или на -r). Можешь из двух точек выбрать ближайшую к B. Добавлено через 1 мин. compiler, отвечай в контексте пожалуйста. никакого шара не получится. |
Maxim Razor |
![]()
Сообщение
#9
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Реальное имя: Max Репутация: ![]() ![]() ![]() |
Бррр...Вроде и понятно, а вроде и не понятно :wall: . А можно это ввиде кода и с комментами, а то я уже несколько дней над этим корплю, от русских слов и букв отвык...
![]() |
Michael_Rybak |
![]()
Сообщение
#10
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
в виде кода - не вижу в этом необходимости. что непонятно - спрашивай.
|
Maxim Razor |
![]()
Сообщение
#11
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Реальное имя: Max Репутация: ![]() ![]() ![]() |
Или, если так понятнее: тебе нужна точка Н, которая делит отрезок АС в отношении АНАС-АН).
Получается H = A + (C - A) * AH/AC для каждой из координат. (Формулы в итоге те же самые). Как я понял это мы находим точку H. O.X = H.X + NEWDX * OH O.Y = H.Y - NEWDY * OH А это координаты центра? Правильно расчитал? |
Michael_Rybak |
![]()
Сообщение
#12
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Правильно, но есть еще второй "центр":
O1.X = H.X - NEWDX * OH O1.Y = H.Y [b]+ NEWDY * OH Т.е. плюс либо сверху, либо снизу (комбинация +- или -+ соответствует одному из двух перпендикулярных отрезку АН лучей в точке Н). Из точек О и О1 нужно выбрать ту, которая на самом деле является центром. Т.е. ту, которая ближе к третьей вершине (В). |
Maxim Razor |
![]()
Сообщение
#13
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Реальное имя: Max Репутация: ![]() ![]() ![]() |
Спасибо, буду пытаться, слушай, а можешь посмотреть мои высоты? А то как то криво они иногда рисуются
HA := 2 * Square / BC; |
Michael_Rybak |
![]()
Сообщение
#14
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Нет, извини, искать чужие баги мне лень. Разберись сам, почему криво рисует.
|
Maxim Razor |
![]()
Сообщение
#15
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Реальное имя: Max Репутация: ![]() ![]() ![]() |
Help, вписанную скошено рисует, а описанная тоже скошена, и кажется большим радиусом.
|
Maxim Razor |
![]()
Сообщение
#16
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Реальное имя: Max Репутация: ![]() ![]() ![]() |
Пожалусто, помогите, только это осталось
![]() рисует вот так ![]() RadiusV :=Square/PolPerimetr; Сообщение отредактировано: Maxim Razor - 14.01.2008 21:09 |
Michael_Rybak |
![]()
Сообщение
#17
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Пожалуйста, запости полный код в последней версии.
|
Maxim Razor |
![]()
Сообщение
#18
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Реальное имя: Max Репутация: ![]() ![]() ![]() |
program |
Michael_Rybak |
![]()
Сообщение
#19
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Ты меня таки заставил искать баги
![]() Ок. Только все-таки учись это делать сам. Ошибка раз: переведи угол в радианы, прежде чем брать его синус и косинус. Ошибка два: Цитата AB := sqrt((XB - XA) * (XB - XA) + (YB - YA) * (YB - YA)); BC := sqrt((XC - XB) * (XC - XB) + (YC - YB) * (YC - YB)); CA := sqrt((XA - XC) * (XA - XC) + (XA - YC) * (YA - YC)); И на всякий случай: сейчас будет работать нормально, но в общем случае вот это место неверно: XRO := trunc(HX - NEWDX*OH); Как я уже писал, может оказаться, что там плюс и минус поменяются местами. По-хорошему нужно делать с проверкой. |
Maxim Razor |
![]()
Сообщение
#20
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Реальное имя: Max Репутация: ![]() ![]() ![]() |
Знаешь что я хочу сказать...
ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ ПРОГРАММЕРСКОЕ СПАСИБО!!! Проверку сделаю =) И оформлю красиво, в скором времени выложу здесь. Думаю найдутся люди, которым надо будет делать чтото похожее. ЕЩЕ РАЗ СПАСИБО! |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 2:27 |