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

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

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

Помогите пожалуйста сделать вот такую задачку:Координаты ломаной линии, заданные целыми числами (в пикселях экрана) считать из файла и прорисовать линию на экране. Отметить цветом точки пересечения отрезков ломаной.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.03.2012, 12:37
Ответы с готовыми решениями:

Построить ломаную линию заданной толщины и цвета с черной обводкой
необходимо построить ломаную линию заданной толщины и цвета с черной обводкой(коорд линии массив...

Нарисовать ломаную линию
Нужно нарисовать ломаную линию Я не понимаю как написать структуру POINT с координатами начала...

Построить два графика по координатам
Добрый вечер, помогите пожалуйста построить два графика по координатам: 1)2x*lgx-3x*lgx 2)ctg x...

Как нарисовать ломаную линию?
uses GraphABC; type TPoint=record x,y:Integer; end; const Points1:array of TPoint...

3
Модератор
60534 / 45542 / 31430
Регистрация: 18.05.2008
Сообщений: 109,469
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
0 / 0 / 0
Регистрация: 03.12.2011
Сообщений: 4
18.03.2012, 19:34  [ТС] 3
Благодарю.
0
Модератор
60534 / 45542 / 31430
Регистрация: 18.05.2008
Сообщений: 109,469
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.04.2012, 12:47

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Нарисовать фигуру (ломаную линию)
помогите

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

Изобразить ломаную линию заданной формы
помогите написать программу в делфи 7 1. Заполнить точками случайного цвета область заданной формы...

Добавление точек в замкнутую ломаную линию
Всем здравствуйте. Есть массив точек (изначально он может состоять только из 1 точки)....


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

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

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