![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
DIMMUA |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 10 Пол: Мужской Реальное имя: Дмитрий Репутация: ![]() ![]() ![]() |
Добрый день... У меня возникла маленькая неприятность, оказывется я не знаю как провести линию через две точки на весь экран. Т.е. я знаю как соеденить две точки линией и т д... Ну вот чтобы провести линию через эти две точки на весь экран я не знаю как это сделать. Может есть какая-то легкая процедура и т.д.?
К примеру: есть А(100,100) и B(200,200) - нужно провести через них линию И еще, я так увлекся "украшательством" своей программы, что забыл про свое условие, короче у меня оврал, помогите: Есть уравнение прямой, есть две точки, прямая разбивает плоскость на подплоскости, нужно опеределать лежат ли эти две точки в разных. Уранение прямой разное, в общем виде: sx+ty+u=0 и точки (a,b) и (c,d). Т.е. a,b,c,d,s,t,u вводятся с клавиатуры. Я прикрепил свой исходник.... Он еще не полность доделал... Немного о нем расскажу, чтобы было понятно: точки А,Б - обычные точки (вводите их около плюс-минус 10) точки X1 и X2 - точки из прямой, т.е. это две точки принадлежащие этой прямой. "Новые данные" - это идет "переработка" под вывод этих точек на координатной плоскости, например точка А(-2;1) - это А(280;220) - ну если учесть, что у меня точка (320;240) это центр, а одна "еденица" - это 20 пикселей. Вообщем я должен построить прямую на весь экран, которая проходит через точки X1 и X2 и потом опередалеть лежит ли точки А и Б в одной подплоскости. P.S. Если я что-то непонятно написал, вы спрашивайте... Сообщение отредактировано: DIMMUA - 18.05.2007 23:10 Прикрепленные файлы ![]() |
![]() ![]() |
Lapp |
![]()
Сообщение
#2
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
DIMMUA, ты выбрал не очень удачные названия точек, Х1 и Х2.. Можно я буду называть их M и N?
Так вот, предложение Michael_Rybak'а заключается в следующем.. Точки как бы представлены векторами, проведенными к ним из начала координат, назовем эти вектора так же, M и N. Тогда разность этих векторов представит сам отрезок: а=M-N - вектор от точки N к точке M. b=N-M - наоборот. Рыбак предлагает умножить этот отрезок на 1000 и отложить, что получится, в обе стороны (продлить). Тогда мы получим новые две точки, назовем их K и L : K = M + а*1000 L = N + b*1000 Если расписать это все в координатах, получим: Kx = Mx + (Mx-Nx)*1000 Ky = My + (My-Ny)*1000 Lx = Nx + (Nx-Mx)*1000 Ly = Ny + (Ny-My)*1000 Вот эти точки и соединяй оператором Line. Теперь понятнее? P.S. DIMMUA, спасибо тебе за нормальную подробную постановку задачи с объяснениями и вежливый человеческий тон. Душа отдыхает в такой теме.. Просто хочется отвечать! ![]() Добавлено через 4 мин. Хочу добавить, что мне метод Рыбака не очень по душе.. Так можно запросто вылететь за пределы диапазона целых чисел. Я бы предложил все же находить точное пересечение линии с границей экрана.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
![]() ![]() |
![]() |
Текстовая версия | 25.06.2025 2:34 |