103 / 90 / 75 Регистрация: 04.11.2011 Сообщений: 1,818 |
|
1 |
|
Определить координаты точки21.11.2014, 11:34. Показов 6756. Ответов 3
Помогите с задачей пожалуйста. Нужно разработать программу, выделив процедуры. По идее сначало нужно напистаь свой модуль , а потом подключить его. Вот условие задачи: Если все заданные точки плоскости принадлежат первой четверти, определить координаты точки, наиболее удаленной от начала координат, иначе определить координаты точек, не попавших в первую четверть.
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
21.11.2014, 11:34 |
Ответы с готовыми решениями: Вводятся координаты точки. Определить, попадает ли точка в заштрихованную область или нет
3 |
Legolas 171 / 57 / 45 Регистрация: 21.06.2012 Сообщений: 263 |
||||
21.11.2014, 12:49 |
2 |
|||
Как оформляются модули я уже не помню, держите так, думаю сумеете переделать
0 |
Xo6ut 103 / 90 / 75 Регистрация: 04.11.2011 Сообщений: 1,818 |
||||||||
21.11.2014, 16:54 [ТС] |
3 |
|||||||
Не получается разделить на модуль и основную программу Добавлено через 1 час 51 минуту Добавлено через 2 минуты Добавлено через 21 минуту
Пишет: неправильный тип подрограммы
0 |
Puporev Почетный модератор 64287 / 47586 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
||||||||
21.11.2014, 17:02 |
4 |
|||||||
Помогите только с разделением. Текст модуля
текст программы
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
21.11.2014, 17:02 |
Помогаю со студенческими работами здесь Если все заданные точки плоскости принадлежат первому квадранту, определить координаты точки, наиболее удаленной от начала координат Даны координаты вершин треугольника и координаты точки внутри него. Найти расстояние от данной точки до ближайшей сторон Даны координаты вершин треугольника и координаты некоторой точки внутри него. Найти расстояние от данной точки до ближайшей стороны треугольника
Даны координаты точки А(х1,у1). Определить, принадлежит ли эта точка отрезку [a,b]. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 4 |
Предыдущий раздел:
Следующий раздел:
13.3. Экранные координаты. Точка заданного цвета
При запуске программы с подключенным модулем GraphABC создается так называемое графическое окно — обычное для ОС Windows окно, в пределах которого можно рисовать. Площадь окна можно рассматривать как двумерный массив светящихся точек (пикселей). Координаты точек принимают целочисленные значения и отсчитываются от левого верхнего угла окна (рис. 1). Ось ординат направлена вниз. Соответственно, сам левый верхний угол имеет координаты (0,0). Координаты соседних с ним точек, очевидно, будут (0, 1), (1, 0) и (1, 1).
Рис. 1. Экранная система координат.
Размеры окна по умолчанию составляют 640 на 480 точек. Однако пользователь может менять их произвольным образом обычным для ОС Windows способом (хватать мышью за угол, распахивать на весь экран и т.д.) Узнать текущий размер окна можно с помощью функций WindowWidth и WindowHeight. Например, инструкция
W:=WindowWidth;
запишет текущую ширину в переменную W.
Изначально все пиксели окна имеют белый цвет. Однако каждому можно назначить произвольный цвет, заданный в так называемой системе RGB (расшифровывается Red Green Blue). В этой системе цвет задается тремя целыми числами в диапазоне от 0 до 255, задающими интенсивность красной, зеленой и синей составляющей (как известно, любой цвет можно получить их смешением). Цветовые значения имеют специальный тип Color, их можно получить с помощью функции RGB, имеющей заголовок:
function RGB(r, g, b: byte): Color;
Также цвет можно задать с помощью одной из определенных в модуле GraphABC констант. Например, clRed — красный цвет, clYellow — желтый и т.д. Полный список смотрите в справочной системе среды PascalABC.
Указать любой точке, какого она должна быть цвета можно с помощью процедуры PutPixel. Ее заголовок:
procedure PutPixel(x, y: integer; c: Color);
Здесь x, y – координаты точки, c – цвет точки.
В принципе, этой процедурой можно было бы и ограничится. Раз для любой точки окна можно указать любой цвет, значит можно нарисовать все, что угодно. Однако, все же полезно иметь в своем распоряжении несколько дополнительных команд для рисования простейших объектов.
Отличие среды Borland Pascal
Ширина и высота экрана в пикселях здесь фиксированна (640 x 480).
По умолчанию все пикселы имеют черный цвет (не светятся), но каждому можно назначить один из 16-ти цветов. Каждому цвету, соответствует целочисленная константа, описанная в модуле Graph. Список констант и их значения приведены в таблице:
Цвет | Константа, описанная в модуле Graph | Значение константы |
Черный | Black | 0 |
Синий | Blue | 1 |
Зеленый | Green | 2 |
Голубой | Cyan | 3 |
Красный | Red | 4 |
Фиолетовый | Magenta | 5 |
Коричневый | Brown | 6 |
Светло-серый | LightGray | 7 |
Темно-серый | DarkGray | 8 |
Ярко-синий | LightBlue | 9 |
Ярко-зеленый | LightGreen | 10 |
Ярко-голубой | LightCyan | 11 |
Ярко-красный | LightRed | 12 |
Ярко-фиолетловый | LightMagenta | 13 |
Желтый | Yellow | 14 |
Белый | White | 15 |
Произвольные цвета, не входящие в эту палитру, задать невозможно.
Назначение цвета производится с помощью той же процедуры PutPixel. Ее заголовок:
procedure PutPixel(X, Y: integer; Color: Word);
Здесь X, Y – координаты точки, Color – цвет точки.
Следующий раздел:
Предыдущий раздел:
На занятии происходит знакомство с логическим типом Boolean в Паскале. Рассматривается алгоритм того, как находится минимальное и максимальное число в Паскале
Содержание:
- Графика в Паскале
- Управление цветом
- Точки, отрезки и ломаные
- Рисование фигур
- Функция random для использования окраски
- Анимация в Паскале
Графика в Паскале
Для работы с графикой в pascal abc используется модуль GraphABC. Для его подключения используется следующий код:
uses GraphABC; begin ... end.
Система координат в Паскале соответствует экранной системе координат и выглядит следующим образом:
Система координат
Управление цветом
Для того, чтобы использовать цвет, необходимо применить этот цвет к инструменту перо:
- SetPenColor(color) — устанавливает цвет пера, задаваемый параметром color;
- setBrushColor(color) — устанавливает цвет кисти, задаваемый параметром color;
- либо для палитры RGB: SetPenColor(rgb(0-255, 0-255, 0-255));
- FloodFill(x,y,color) — заливает область одного цвета цветом color, начиная с точки (x,y).
или использовать для заливки:
После чего можно использовать процедуры для рисования геометрических фигур.
Цвета в pascal abc:
clBlack – черный
clPurple – фиолетовый
clWhite – белый
clMaroon – темно-красный
clRed – красный
clNavy – темно-синий
clGreen – зеленый
clBrown – коричневый
clBlue – синий
clSkyBlue – голубой
clYellow – желтый
clCream – кремовый
clAqua – бирюзовый
clOlive – оливковый
clFuchsia – сиреневый
clTeal – сине-зеленый
clGray – темно-серый
clLime – ярко-зеленый
clMoneyGreen – цвет зеленых денег
clLtGray – светло-серый
clDkGray – темно-серый
clMedGray – серый
clSilver – серебряный
Точки, отрезки и ломаные
Для отображения точки в паскале используется процедура:
uses GraphABC; begin SetPixel(300,200,clred); end.
Для рисования линии используется:
uses GraphABC; begin SetPenColor(clgreen); line(100,50,500,250); end.
Ломаные можно рисовать с помощью процедур MoveTo (x1, y1)
и LineTo (x2, y2)
.
Процедуры работают в паре: MoveTo
передвигает курсор в определенную точку, а процедура LineTo
рисует линию с этой точки до точки, определенной параметром данной процедуры.
uses GraphABC; begin ... SetPenColor(clblue); MoveTo (x1, y1); LineTo (x2, y2); LineTo (x3, y3); LineTo (x4, y4); LineTo (x5, y5); end.
Задание 0: При помощи операторов SetPenColor(), LineTo (x2, y2) и MoveTo (x1, y1) нарисовать квадрат и равносторонний треугольник.
[Название файла: L4_2task0.pas
]
Для установки размеров графического окна используется процедура
или, например:
SetWindowWidth(600); SetWindowHeight(400);
Рисование фигур
Прямоугольник в Паскале рисуется:
uses GraphABC; begin Rectangle(50,50,200,200); end.
Фигуры с заливкой:
uses GraphABC; begin Rectangle(50,50,200,200); FloodFill(100,100,clBlue); end.
Треугольник рисуется процедурами:
Line(x1,y1,x2,y2);
LineTo(x,y);
uses GraphABC; begin setpenwidth(20); setpencolor(clred); moveTo(300,100); lineTo(500,300); lineto(100,300); lineto(300,100); floodfill(300,200,clgreen); end.
Окружность можно нарисовать с помощью процедуры:
uses GraphABC; begin Circle(500,200,100); FloodFill(500,200,clred); end.
Дуга окружности
1 2 3 4 5 |
uses GraphABC; Begin SetPenWidth(10); Arc(300,250,150,45,135); end. |
Задание 1: «Лягушка»
[Название файла: L4_2task1.pas
]
Задание 2: «Корона»
[Название файла: L4_2task2.pas
]
Функция random для использования окраски
Задание 3: Нарисовать горизонтальный ряд окружностей радиусом 10 на расстоянии 100 от верхнего края экрана и с такими горизонтальными координатами 50, 80, 110, 140, … , 290.
* раскрасить круги случайным цветом
[Название файла: L4_2task3.pas
]
Задание 4: «Круги на воде».
Нарисуйте пару десятков концентрических окружностей, то есть окружностей разного радиуса, но имеющих общий центр.
[Название файла: L4_2task4.pas
]
Задание 5:
Воспроизвести изображение при помощи программы:
[Название файла: L4_2task5.pas
]
Штриховка
Нарисовать штриховку на Паскале можно, используя процедуры рисования прямоугольника и линии:
Программа будет выглядеть следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
uses graphABC; var i, x1, x2, y1, y2, N: integer; h, x: real; begin x1 := 100; y1 := 100; x2 := 300; y2 := 200; N := 10; Rectangle (x1, y1, x2, y2); h := (x2 - x1) / (N + 1); x := x1 + h; for i:=1 to N do begin Line(round(x), y1, round(x), y2); x := x + h; end; end. |
Задание 6:
Нарисуйте шахматную доску.
[Название файла: L4_2task6.pas
]
Анимация в Паскале
Анимация в программировании заключается в том, что сначала рисуется фигура цветным инструментом, затем с тем же координатами рисуется та же фигура белым цветом. После чего происходит сдвиг фигуры и действия повторяются.
Пример: Воспроизвести движение круга по горизонтали.
1 2 3 4 5 6 7 8 9 10 11 12 |
uses GraphABC; var x:integer; begin x:=40; repeat SetPenColor(clWhite); Circle(x,100,10); {Рисуем белую окружность} SetPenColor(clBlack); Circle(x,100,10); {Рисуем черную окружность} x:=x+1 {Перемещаемся немного направо} until x>600; end. |
Задание 7: Выполнить анимацию движения квадрата по следующей траектории:
[Название файла: L4_2task7.pas
]
Процедуру SetViewPort удобно использовать для построения системы координат на экране. Эту систему координат можно в дальнейшем использовать для построения графика функции.
Построение системы координат с помощью процедуры SetViewPort.
Program Graphika26; Uses Graph; Procedure Graphinterface; Var gd, gm, error:Integer; s:String; Begin gd:=detect; s:=''; Initgraph(gd,gm,s); error:=GraphResult; if error<>GrOk then begin writeln(GraphErrorMsg(Error)); Halt(error) end end; begin Graphinterface; setviewport(getmaxx div 2, getmaxy div 2, getmaxx, getmaxy,clipoff); setcolor(5); setlinestyle(0,0,3); line(-300,0,300,0); line(0,-300,0,300); line(300,0,270,-10); line(300,0,270,10); line(0,-300,-10,-270); line(0,-300,10,-270); readln; closegraph end.
В строке №19 записываем процедуру SetViewPort, которая строит на экране невидимое окно. Координаты левого верхнего угла этого окна совпадают с серединой экрана (getmaxx div 2, getmaxy div 2). Координаты правого нижнего угла окна совпадают с правым нижним углом всего экрана. На рис. снизу представлено расположение окна (ABCD), построенного с помощью процедуры SetViewPort. Левый верхний угол окна (точка B) имеет координаты (getmaxx div 2, getmaxy div 2) и совпадает с серединой экрана. Правый нижний угол окна имеет координаты (getmaxx, getmaxy) и совпадает с правым нижним углом экрана.
5-й параметр процедуры SetViewPort имеет значение ClipOff, т.е. элементы изображений, выходящие за пределы окна, не будут отсекаться.
Строка №20 и №21. Устанавливаем цвет, тип и толщину линий.
Строка №22. Рисуем линию. Так как начало координат теперь находится в левом верхнем углу окна (в точке B), нам необходимо использовать отрицательные координаты при построении изображений, находящихся левее либо выше окна ABCD. На рис. снизу показаны линии, построенные с помощью процедуры Line.
Линия EF построена с помощью процедуры Line в строке №22.
Линия GH построена с помощью процедуры Line в строке №23.
Так как точка B имеет координаты (0,0), точка E будет иметь координаты (-300,0), точка F – (300,0), точка G – (0,-300), точка H – (300,0). Таким образом, на данном этапе необходимо запомнить, что изображение, находящееся левее, либо выше окна, построенного с помощью процедуры SetViewPort, должно иметь отрицательные координаты.
Строка №24-№27. Строим стрелочки, указывающие направление осей. На рис. снизу линия FJ построена с помощью процедуры Line в строке №24. Точка F имеет координаты (300,0), точка J – (270,-10).
Предыдущая статья : Процедура SetViewPort.
Оглавление : Уроки Паскаль. Графика.
Следующая статья : Построение системы координат (продолжение).
Формулировка задачи:
Написать программу для нахождения координат точки С.
Дано:
точка В принадлежит отрезку АС
координаты точек:
А(x0,y0,z0)
В(x1,y1,z1)
найти С(x,y,z)
если ВС=k;
Код к задаче: «Найти координаты точки»
textual
x := x1 + (x1 - x0) / abs(x1 - x0) * k;
Полезно ли:
9 голосов , оценка 3.444 из 5