Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/22: Рейтинг темы: голосов - 22, средняя оценка - 4.91
Zimin
0 / 0 / 0
Регистрация: 03.12.2011
Сообщений: 4
1

Графика. Построить ломаную линию по координатам из файла

18.03.2012, 12:37. Просмотров 3921. Ответов 3
Метки нет (Все метки)

Помогите пожалуйста сделать вот такую задачку:Координаты ломаной линии, заданные целыми числами (в пикселях экрана) считать из файла и прорисовать линию на экране. Отметить цветом точки пересечения отрезков ломаной.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2012, 12:37
Ответы с готовыми решениями:

Построить два графика по координатам
Добрый вечер, помогите пожалуйста построить два графика по координатам:...

Постройте ломаную линию, проходящую через заданные точки
На плоскости заданы n точек своими координатами. Постройте ломаную линию,...

Написать программу, которая вычерчивает на экране ломаную линию, состоящую из 100 звеньев
Написать программу, которая вычерчивает на экране ломаную линию, состоящую из...

Прочитав данные текстового файла построить ломанную линию
Прочитав данные текстового файла построить ломанную линию Данные в файле...

Графика: построить 2 графика в одной координатной плоскости
Нужно построить 2 графика в одной координатной плоскости, но для начала нужно...

3
Puporev
Модератор
54677 / 42099 / 29068
Регистрация: 18.05.2008
Сообщений: 99,343
18.03.2012, 12:53 2
Создаем текстовый файл в папке с программой назовем его input
Примерное содержание
25 10
80 50
150 300
250 200
350 400
450 150
550 180
600 300
после последнего числа не должно быть пробелов, табуляций и пустых строк.

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
uses graph;
var x,y,x1,y1:integer;
    t:text;
begin
initgraph(x,y,'');
assign(t,'input.txt');
reset(t);
read(t,x,y);
while not eof(t) do
 begin
  read(t,x1,y1);
  setcolor(15);
  line(x,y,x1,y1);
  if not eof(t) then
   begin
    setcolor(12);
    circle(x1,y1,2);
   end;
  x:=x1;
  y:=y1;
 end;
close(t);
readln
end.
1
Zimin
0 / 0 / 0
Регистрация: 03.12.2011
Сообщений: 4
18.03.2012, 19:34  [ТС] 3
Благодарю.
0
Puporev
Модератор
54677 / 42099 / 29068
Регистрация: 18.05.2008
Сообщений: 99,343
16.04.2012, 12:47 4
С пересечениями.
Пример файла
50 100
500 420
500 50
150 400
150 50
600 300
алгоритм списал у математиков, толком до конца не понял, разбирайся сам.
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
uses graph;
type Point=record{тип точка с полями-координатами}
           x,y:longint;
           end;
{функция определения пересечения и вычисления точки пересечения}
function Peres(t11,t12,t21,t22:Point;var tp:Point):boolean;
var a,b,c,d,e,f:longint;
    dt,ds,det,t,s:real;
    ff:boolean;
begin
ff:=true;
{вычислим координаты векторов}
a:=t12.x-t11.x; { x2-x1;}
b:=t21.x-t22.x; { x3-x4;}
c:=t21.x-t11.x; { x3-x1;}
d:=t12.y-t11.y; { y2-y1;}
e:=t21.y-t22.y; { y3-y4;}
f:=t21.y-t11.y; { y3-y1;}
det:=a*e-b*d;{вычислим определитель матрицы}
if det=0 then Peres:=false{прямые не пересекаются}
else
 begin{определяем принадлежит ли точка пересечения обоим отрезкам}
  dt:=c*e-f*b;
  ds:=a*f-c*d;
  t:=dt/det;
  s:=ds/det;
  if (s>0) and (s<1){принадлежит 1, концы отрезков не считаем}
  and(0<t) and (t<1){принадлежит 2} then
   begin
    {вычислим координаты точки пересечения прямых}
    tp.x:=round(t11.x*(1-t)+t12.x*t);
    tp.y:=round(t11.y*(1-t)+t12.y*t)
   end
  else ff:=false;
 end;
Peres:=ff;
end;
var n,i,j:integer;
    a:array[1..100] of Point;
    t:text;
    f:boolean;
    p:Point;
begin
initgraph(n,i,'');
assign(t,'input.txt');
reset(t);
n:=1;{читаем 1 точку}
read(t,a[1].x,a[1].y);
while not eof(t) do{остальные}
 begin
  n:=n+1;
  read(t,a[n].x,a[n].y);
  line(a[n-1].x,a[n-1].y,a[n].x,a[n].y); {соединяем точки}
 end;
close(t);
for i:=1 to n-3 do {перебираем все отрезки кроме 2х последних}
for j:=i+2 to n-1 do{перебираем от на 2 больше до последнего}
 begin
  f:=Peres(a[i],a[i+1],a[j],a[j+1],p);{определяем пересечение}
  if f then{если пересекаются}
   begin
    setcolor(12);
    putpixel(p.x,p.y,12);{рисуем точку}
    circle(p.x,p.y,2);{и обводим}
   end;
 end;
readln
end.
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2012, 12:47

По координатам точек построить четырехугольник
По координатам точек построить четырехугольник1

Построить треугольник по заданным координатам вершин, вычислить площадь
Есть готовая прога,но неправильно работает. Задание:Построить треугольник по...

Графика. получить на экране прямую линию,которая движется и в каждый определенный момент времени является касательной к кругу с заданым радиусом
получить на экране прямую линию,которая движется и в каждый определенный момент...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru