Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
21 / 18 / 4
Регистрация: 07.04.2010
Сообщений: 806
1

Расположение точки относительно луча

21.06.2013, 20:50. Показов 2365. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задачка такая есть!Нужна помощь!
Даны три точки А,В,С, лежащие на одной прямой. Определить расположение точки С относительно луча АВ.

Добавлено через 14 часов 1 минуту
Плиззз!

Добавлено через 5 часов 21 минуту


Добавлено через 6 часов 22 минуты
Жаль!

Добавлено через 11 часов 2 минуты


Добавлено через 9 часов 39 минут
Есть задача, расположения точки относительно прямой, а как сделать с лучом?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
program z1;
uses crt;
type point = record
              x, y :real;
             end;
var m1,m2,m3 : point;
    a,b,c,z:real;
begin
writeln('Ââåäèòå êîîðäèíàòû ïåðâîé òî÷êè íà ïðÿìîé');
write('x=');read(m2.x);
write('y=');read(m2.y);
writeln('Ââåäèòå êîîðäèíàòû âòîðîé òî÷êè íà ïðÿìîé');
write('x=');read(m3.x);
write('y=');read(m3.y);
writeln('Ââåäèòå êîîðäèíàòû òî÷êè äëÿ àíàëèçà');
write('x=');read(m1.x);
write('y=');read(m1.y);
//îïðåäåëåíèå êîýôôèöèåíòîâ ïðÿìîé M2M3
a := m3.y - m2.y;
b := m2.x - m3.x;
c := m2.x * (m2.y - m3.y) + m2.y * (m3.x - m2.x);
//îïðåäåëåíèå ïîëîæåíèÿ òî÷êè Ì1
z:=a * m1.x + b * m1.y + c;
if z > 0 then write('Òî÷êà Ì1 ñïðàâà îò ïðÿìîé Ì2Ì3')
else if z < 0 then write('Òî÷êà Ì1 ñëåâà îò ïðÿìîé Ì2Ì3')
else  write('Òî÷êà Ì1 íà ïðÿìîé Ì2Ì3')
end.
Добавлено через 2 часа 13 минут
Подскажите!

Добавлено через 12 часов 38 минут


Добавлено через 8 часов 56 минут
Кто-нибудь знает?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.06.2013, 20:50
Ответы с готовыми решениями:

Найти наибольший элемент массива и сообщить его расположение относительно левой диагонали
Мне по практики задали задание, но у меня после сесии голова не работает:wall: Если кому не трудно...

Взаимное расположение точки и окружности
Дана единичная окружность(с центром в начале координат). Так же дан квадрат, со стороною 1(y&gt;0 x&gt;0...

SOS!! Определить взаимное расположение точки
Люди добрые помогите, не могу понять эту тему! пожалйста спаситеОпределить взаимное расположение...

Определить взаимное расположение точки и окружности
Определить взаимное расположение точки с координатами (x0, y0) и окружности радиуса R с центром в...

6
100 / 97 / 61
Регистрация: 08.08.2012
Сообщений: 163
21.06.2013, 21:56 2
Думаю луч это тоже самое что и вектор
Кликните здесь для просмотра всего текста
{ геометрические алгоритмы: С какой стороны вектора лежит точка? }
{ ------------------------------------------------------------------------ }
{ Если vector(a) и vector(b) - вектора a и b соответственно, то: }
{ }
{ vector(a)*vector(b) = ax*by - ay*bx = a*b*sin(beta-alfa) }
{ ax,ay,bx,by - координаты концов векторов }
{ a - длина вектора a }
{ b - длина вектора b }
{ alfa - угол альфа для вектора a }
{ beta - угол бета для вектора b }
{ }
{ Вывод: при общей начальной точке двух векторов их векторное произведение }
{ больше нуля, если второй вектор направлен влево от первого, }
{ и меньше нуля, если вправо. }
{ }
{ Если известны две точки, то вектор, основанный на них можно получить }
{ вычитанием двух векторов направленных из начала координат: }
{ Например, есть точка A и точка B }
{ вектор|AB| = Вектор|B| - Вектор|A|, иным словом AB_x = Bx-Ax, AB_y= By-Ay}
{ }
{ Таким образом, получается: }
{ Если есть вектор |AB|, заданный координатами ax,ay,bx,by и точка px,py, }
{ то для того чтобы узнать лежит ли она слева или справа, надо узнать знак }
{ произведения: }
{ (bx-ax)*(py-ay)-(by-ay)*(px-ax) }
{ ------------------------------------------------------------------------ }

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var i:integer;
 
(* функция определеяет положение точки относительно вектора               *)
Function WherePoint(ax,ay,bx,by,px,py:real):integer;
var s :real;
begin
    s:=(bx-ax)*(py-ay)-(by-ay)*(px-ax);
    if s > 0 then WherePoint:=1
    else if s < 0 then WherePoint:=-1
    else WherePoint:=0;
end;
 
Begin (* Тело основной программы *)
   i:=WherePoint(1,1,8,8,2,5);
   if i > 0 then writeln('точка слева от вектора')
   else if i < 0 then writeln('точка справа от вектора')
   else writeln('на векторе, прямо по вектору или сзади вектора');
End.
источник acmp.ru
1
21 / 18 / 4
Регистрация: 07.04.2010
Сообщений: 806
23.06.2013, 19:51  [ТС] 3
А где здесь ввод данных?
0
100 / 97 / 61
Регистрация: 08.08.2012
Сообщений: 163
23.06.2013, 20:00 4
14 строчка процедура WherePoint.
1 и 2 аргумент - координаты начала луча.
3 и 4 аргумент - направление луча
5 и 6 аргумент - координаты точки.
Можете создать 6 локальных переменных для основной программы и вводить значения в консоли. Или менять аргументы в процедуре..
1
21 / 18 / 4
Регистрация: 07.04.2010
Сообщений: 806
23.06.2013, 20:30  [ТС] 5
Если сделать так, ошибки не будет?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
program z1;
var
ax,ay,bx,by,px,py,s,w:real;
begin
 write('Ââåäèòå êîîðäèíàòû òî÷êè A: ');
  readln(ax,ay);
  write('Ââåäèòå êîîðäèíàòû òî÷êè B: ');
  readln(bx,by);
  write('Ââåäèòå êîîðäèíàòû òî÷êè C: ');
  readln(px);
    s:=(bx-ax)*(py-ay)-(by-ay)*(px-ax);
    if s > 0 then w:=1
    else if s < 0 then w:=-1
    else w:=0;
   if w > 0 then writeln('òî÷êà ñëåâà îò âåêòîðà')
   else if w < 0 then writeln('òî÷êà ñïðàâà îò âåêòîðà')
   else writeln('íà âåêòîðå, ïðÿìî ïî âåêòîðó èëè ñçàäè âåêòîðà');
End.
Добавлено через 2 минуты
Точнее так!
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
program z1;
var
ax,ay,bx,by,px,py,s,w:real;
begin
 write('Введите координаты точки A: ');
  readln(ax,ay);
  write('Введите координаты точки B: ');
  readln(bx,by);
  write('Введите координаты точки C: ');
  readln(px);
    s:=(bx-ax)*(py-ay)-(by-ay)*(px-ax);
   if s > 0 then writeln('Точка слева от вектора')
   else if s < 0 then writeln('Точка справа от вектора')
   else writeln('На векторе, прямо по вектору или сзади вектора');
End.
Добавлено через 2 минуты
Что-то не то
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
program z1;
var
ax,ay,bx,by,px,py,s,w:real;
begin
 write('Ââåäèòå êîîðäèíàòû òî÷êè A: ');
  readln(ax,ay);
  write('Ââåäèòå êîîðäèíàòû òî÷êè B: ');
  readln(bx,by);
  write('Ââåäèòå êîîðäèíàòû òî÷êè C: ');
  readln(px,py);
    s:=(bx-ax)*(py-ay)-(by-ay)*(px-ax);
   if s > 0 then writeln('Òî÷êà ñëåâà îò âåêòîðà')
   else if s < 0 then writeln('Òî÷êà ñïðàâà îò âåêòîðà')
   else writeln('Íà âåêòîðå, ïðÿìî ïî âåêòîðó èëè ñçàäè âåêòîðà');
End.
Добавлено через 1 минуту
Или все же верно?
0
100 / 97 / 61
Регистрация: 08.08.2012
Сообщений: 163
23.06.2013, 20:38 6
Ну если правильно переписали функцию, то не должно.
С аналитической геометрией я почти не занимался, так что не могу сказать правильные программа выдаёт ответы или нет. Надеюсь автор проги своё дело знает)
п.с.
вы пропустили вторую координату в 10 строчке.

Добавлено через 3 минуты
переменную w вообще убрать можете.
1
21 / 18 / 4
Регистрация: 07.04.2010
Сообщений: 806
23.06.2013, 20:41  [ТС] 7
Вот, исправил!

Добавлено через 2 минуты
Спасибо Вам и автору!
0
23.06.2013, 20:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.06.2013, 20:41
Помогаю со студенческими работами здесь

Выяснить взаимное расположение точки и окружности
1. выяснить взаимное расположение точки A(x0;y0) и окружности (x-a)в квадрате+(y-b)в квдрате-R в...

Определить взаимное расположение точки и прямоугольника на плоскости
Определить взаимное расположение точки и прямоугольника на плоскости: принадлежит, не...

Положение точки относительно треугольника.
Гарри Поттер решил выучить заклинание, которое позволило бы ему выбраться из замка, форма которого...

Симметричность точки относительно прямой
Задана прямая L, параллельная одной из осей координат, и точка А. Найти координаты точки В,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru