Форум программистов, компьютерный форум, киберфорум
Наши страницы

Turbo Pascal

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.76
Zimin
0 / 0 / 0
Регистрация: 03.12.2011
Сообщений: 4
#1

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

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

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

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

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

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

Прочитав данные текстового файла построить ломанную линию - Turbo Pascal
Прочитав данные текстового файла построить ломанную линию Данные в файле хранятся построчно в форме: Число шагов направление (л, п, в,...

Графика: построить 2 графика в одной координатной плоскости - Turbo Pascal
Нужно построить 2 графика в одной координатной плоскости, но для начала нужно протабулировать функции... С Графикой ни разу не встречалась,...

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

3
Puporev
Модератор
52973 / 40784 / 14032
Регистрация: 18.05.2008
Сообщений: 94,840
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
Модератор
52973 / 40784 / 14032
Регистрация: 18.05.2008
Сообщений: 94,840
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
16.04.2012, 12:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2012, 12:47
Привет! Вот еще темы с ответами:

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

Построить ломаную линию заданной толщины и цвета с черной обводкой - Unity, Unity3D
необходимо построить ломаную линию заданной толщины и цвета с черной обводкой(коорд линии массив точек List&lt;Vector2&gt; ). подскажите, как...

Нарисовать ломаную линию - C++ WinAPI
Нужно нарисовать ломаную линию Я не понимаю как написать структуру POINT с координатами начала ломаной линии, координаты точек излома и...

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


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

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

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