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

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Провести линию и ... две точки в одной подплоскости, провсети линию через две точки на весь экран
сообщение
Сообщение #1


Новичок
*

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

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


Добрый день... У меня возникла маленькая неприятность, оказывется я не знаю как провести линию через две точки на весь экран. Т.е. я знаю как соеденить две точки линией и т д... Ну вот чтобы провести линию через эти две точки на весь экран я не знаю как это сделать. Может есть какая-то легкая процедура и т.д.?

К примеру: есть А(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 -


Прикрепленные файлы
Прикрепленный файл  GRAFIK.PAS ( 1.69 килобайт ) Кол-во скачиваний: 249
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Michael_Rybak
*****

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

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


Если тебе не обязательно делать всё по-честному, можешь существенно выйти за пределы экрана.

Чтобы провести прямую, соединяющую точки Х1 и Х2, продли отрезок Х1-Х2 тысячекратно в обе стороны:

X1 + (X1-X2) * 1000 -> X2 + (X2-X1) * 1000

Понятно, что экран полностью пересечется.

Что касается вопроса про точки А и Б - нужно проверить, что ориентированные площади треугольников Х1Х2А и Х1Х2Б имеют одинаковый знак:

def OrientS(a, b, c) = (a.x-c.x)*(b.y-c.y) - (a.y-c.y)*(b.x-c.y)
return sign(OrientS(Х1, Х2, А)) = sign(OrientS(Х1, Х2, Б))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Спасибо, что ответили, кое что прояснилось... Правда я не все понял sad.gif
мисс_граффит это сильно сложно для меня, не мой уровень так сказать...

Michael_Rybak прочитал про ориантированную площадь треугольника, поискал в Инете, нашел такую формулу (твоя мне показалась сложной):

Ориентированная площадь S треугольника с вершинами P1, P2, P3:

. . . . | x1 y1 1 |
S = 1/2 | x2 y2 1 | = 1/2*[x1(y2-y3)+x2(y3-y1)+x3(y1-y2)]
. . . . | x3 y3 1 |


(точки поствил, что бы не смещалось)

У меня допустим точки P1, P2 - это точки X1 и X2, а в P3 я подставляю точку А и потом точку B. Попробовал, вроде все работает, если точки в разных подплоскоятх, то площади отличаются знаком.

Но вот насчет "продления" я не понял как это сделать.... Меня впринципе не интересует, где будут концы этого отрезка, главное чтобы он пересек экран (для наглядности). Можешь написать формулу продления отрезка более доходчиво для меня.

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

Сообщений в этой теме


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

 





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