![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#41 | |||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]()
Всю тему просмотрел, но не детально поэтому ответ только на последний пост (без учета предыдущих).
Цитата:
две точки (x1,x2) (x2,y2) прямая (y1-y2)*x + (x2-x1)*y + (x1*y2-x2*y1) = 0 четыре стены (еще четыре прямые) параллельные осям координат (сторонам экрана монитора поэтому верт./ горизонт.) y=0 | x=0 | y=m | x=n Цитата:
y=0+10 | m-10 ( для горизонтальных стен (сторон монитора)) пересечение двух прямых =решение системы двух уравнений (y1-y2)*x + (x2-x1)*y + (x1*y2-x2*y1) = 0 y=10 (для одной из вертикальных стен) (y1-y2)*x + (x2-x1)*10 + (x1*y2-x2*y1) = 0 x=0-( (x2-x1)*10 + (x1*y2-x2*y1) ) / (y1-y2) Цитата:
x=0-( (x2-x1)*10 + (x1*y2-x2*y1) ) / (y1-y2)
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 30.03.2013 в 10:03. |
|||
![]() |
![]() |
![]() |
#42 | |
Сама себе режиссер
Старожил
Регистрация: 27.04.2007
Сообщений: 3,365
|
![]() Цитата:
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
|
|
![]() |
![]() |
![]() |
#43 | ||
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]() Цитата:
Цитата:
Пусть прямая W задана уравнением x*Wx + y*Wy + Wz = 0, причём Wx^2+Wy^2 = 1. Будем называть такое задание произвольной прямой её нормальной формой. Пусть также известно, что "наша" сторона стены - это полуплоскость x*Wx + y*Wy + Wz > 0. Аналогично, пусть прямая L задана уравнением x*Lx + y*Ly + Lz = 0 и Lx^2+Ly^2 = 1. Эту форму можно построить по двум точкам: взять уравнение (x-x2)(y1-y2) - (x1-x2)(y-y2) = 0, и поделить на ((x1-x2)^2+(y1-y2)^2). Тогда точка P определена парой уравнений: x*Lx + y*Ly + Lz = 0, x*Wx + y*Wy + Wz = 10. Формулу написать можно, но проще написать код: Код:
|
||
![]() |
![]() |
![]() |
#44 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,543
|
![]() Цитата:
второй вариант. У любой стены опять же есть координаты двух ее окончаний(углов). Т.е. есть две точки, значит есть уравнение прямой проходящей через эти две точки. Заменяем простое уравнение прямой параллельной оси (y=10) на общее уравнение прямой проходящей через концы стены(углы) и решаем.
программа — запись алгоритма на языке понятном транслятору
|
|
![]() |
![]() |
![]() |
#45 | |||
Сама себе режиссер
Старожил
Регистрация: 27.04.2007
Сообщений: 3,365
|
![]() Цитата:
Цитата:
Вот что меня и смущает в учебниках геометрии. "Пусть известно". Не известно ничего. Известно только то, что я написала. Если из этого можно что-то вывести, подскажите, как. Я не издеваюсь, у меня правда сложности с применением математических формул в программировании. Цитата:
Еще раз что я хочу сделать: круги.png Есть шар с центром в С (координаты известны), он находится от прямой АВ (заданной двумя точками) на расстоянии, скажем, 13. Через какой-то промежуток времени шар пересчитывает координаты, и теперь его центр с точке D(координаты известны), расстояние до прямой АВ, скажем, 8. Мне нужно, чтобы шар не залетал никаким образом за прямую АВ, т.е. чтобы расстояние от центра до АВ никогда не превышало радиус шара (скажем, 10). Поэтому на этой итерации я хочу оттолкнуть шар в такую точку, где его расстояние до АВ станет 10. Но я не знаю координат этой точки. Вот их мне нужно узнать.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
|
|||
![]() |
![]() |
![]() |
#46 | ||||
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]() Цитата:
Соответственно, пусть у нас есть прямая L в виде (Lx, Ly, Lz). Её можно построить по двум точкам, по точке и вектору, по ещё чему-нибудь... неважно, она есть. В любой точке можно построить к ней перпендикуляр (читайте - другую тройку чисел, представляющую перпендикулярную прямую). На уровне кода: Код:
Цитата:
Код:
Цитата:
Цитата:
Код:
Код:
|
||||
![]() |
![]() |
![]() |
#47 |
Сама себе режиссер
Старожил
Регистрация: 27.04.2007
Сообщений: 3,365
|
![]()
В общем, поднасобирав инфы тут и в книгах, в результате получила такое решение (вдруг кому понадобится)
Код:
Код:
Код:
Код:
Код:
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
Последний раз редактировалось ACE Valery; 06.04.2013 в 16:24. |
![]() |
![]() |
![]() |
#48 |
Сама себе режиссер
Старожил
Регистрация: 27.04.2007
Сообщений: 3,365
|
![]()
Блин, я или тупая, или тупая...
![]() Есть два отрезка, заданные своими концами. Вот имеем только точки концов отрезков. Надо определить, пересекаются ли эти отрезки (именно отрезки, а не прямые, на которых они лежат). В идеале - точку пересечения. Ни угла, ни каких-либо коэффициентов, ни еще чего-либо я не имею. Только 4 точки. Собственно вопрос: а) как из уравнения прямой по двум точкам перейти к общему уравнению прямой (ибо в учебниках только с его помощью находятся пересечения)? б) что мне нужно учесть в формулах, чтоб просчитывались только отрезки, а не прямые, на которых они лежат?
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
|
![]() |
![]() |
![]() |
#50 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
я, в свою очередь тоже вставлю свои "5 копеек"
во-первых, тема "Пересечение отрезков" не оно? а во-вторых, там в теме мой пост, это из книги С. Окулов. Программирование в алгоритмах взять можно тут или тут |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
векторная алгебра | KIRILOW | Помощь студентам | 61 | 31.10.2012 15:45 |
LNK1561 (векторная программа) | finz | Помощь студентам | 6 | 20.05.2011 18:01 |
Векторная графика | AnReykfi | Помощь студентам | 0 | 15.05.2010 14:10 |
векторная графика. квадрат | varelik | Мультимедиа в Delphi | 18 | 07.09.2009 22:25 |
Векторная графика в C++ Builder 6 | Max2114 | C++ Builder | 3 | 19.01.2009 14:56 |