Добрый день, товарищи!
В этой публикации мы разберем, как находить координаты точек математической функции y = kx + b. С помощью программы мы найдем две координаты для построения графика. Напомню, что график данной функции – прямая.
Перед тем, как начать, покажу вам, как от значения k и b зависит положение графика, это так, на всякий случай.
В конце публикации – ссылка на код на Яндекс.Диске.
Итак, начинаем..
1. Переменные для программы
Смотрим: х1 и у1 нам нужны для первого набора точек, х2 и у2 – для второго. Ну и, само собой, k и b. Тип данных выберем вещественный, так как такая функция может легко содержать в себе дроби.
2. Введем k и b
Просто введем пару пригласительных сообщений, для наглядности, и сделаем возможность вводить переменные.
3. Задаем точки (х) функции
Так же, как и в предыдущем примере предложим пользователю ввести значения точек-иксов.
В конце, перед самим решением функции выведем его полностью, уже с нашими введенными значениями. Для наглядности, опять таки.
4. Решение функции
Решим два простеньких уравнения для каждой из заданных точек (х1 и х2). Готово! Функция решена, точки найдены. Остается только красиво это все вывести.
5. Выводим результаты
Выглядит страшно, но при работе программы все ровно наоборот. Такой подробный вывод не является обязательным, но чем красивше, тем лучше, верно?
6. Тестирование
Так выглядит тест программы, для первого теста были взяты значения х {0} и {1}, потому что функция является линейной, и брать эти значения проще всего.
Программа не строит график самостоятельно (хотя на Delphi это более чем возможно реализовать, ну об этом в будущем), но для этого теста я построил график с найденными точками.
7. Конец
Чтож, программа доделана, код, как и обещал, кидаю ниже:
Скачать программу для Паскаля с Яндекс.Диска
Данный человек всегда открыт для обсуждения контента и общения с подписчиками, если найдутся какие либо вопросы то я обязательно постараюсь ответить на них.
По возможности я попросил бы подписаться и оценить публикацию. Сейчас это критически важно для развития канала. Так то!
Доброго вам всем здоровьица в эти трудные времена!
Определение координат рандомной точки в паскале
Знаток
(281),
закрыт
10 лет назад
Дополнен 10 лет назад
Мне нужны координаты этих точек чтобы потом соединить их линиями, вообще задание состоит в том чтобы нарисовать граф, задается количество вершин и количество ребер
Дополнен 10 лет назад
Я занес их в массив, а как мне сделать чтобы они все замыкались?
Fantom
Ученик
(212)
10 лет назад
Координаты действительно в X и Y, как и писали выше, а вот если надо после этого цикла изнайти эти координаты, то нужно их в цикле записывать в массив, например.
Арсен Арутюнян
Гуру
(4674)
10 лет назад
Всмысле определить?
У вас же задаются 2 рандомных числа и тут же перадаются как параметры функции, если вам надо узнать что за числа были перданны, то можете в каждой итерации цикла просто вывести эти числа, например:
после функции putpixel пишете writeln(‘x = ‘,x,’y= ‘,y);
103 / 90 / 75 Регистрация: 04.11.2011 Сообщений: 1,818 |
|
1 |
|
Определить координаты точки21.11.2014, 11:34. Показов 6753. Ответов 3
Помогите с задачей пожалуйста. Нужно разработать программу, выделив процедуры. По идее сначало нужно напистаь свой модуль , а потом подключить его. Вот условие задачи: Если все заданные точки плоскости принадлежат первой четверти, определить координаты точки, наиболее удаленной от начала координат, иначе определить координаты точек, не попавших в первую четверть.
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
21.11.2014, 11:34 |
Ответы с готовыми решениями: Вводятся координаты точки. Определить, попадает ли точка в заштрихованную область или нет Даны два целых числа – координаты точки в декартовой системе координат. Определить, в какой четверти находится точка Даны два числа – координаты точки в декартовой системе координат. Определить, к какой оси X млм Y она ближе Даны координаты точки (x,y). Определить принадлежность заданной точки заштрихованной области, включая ее границы 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 Почетный модератор 64286 / 47585 / 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 |
Помогаю со студенческими работами здесь Если все заданные точки плоскости принадлежат первому квадранту, определить координаты точки, наиболее удаленной от начала координат Даны координаты вершин треугольника и координаты точки внутри него. Найти расстояние от данной точки до ближайшей сторон Даны координаты вершин треугольника и координаты некоторой точки внутри него. Найти расстояние от данной точки до ближайшей стороны треугольника Определить координаты точки, наиболее удаленной от начала координат Ввести координаты точки, определить, лежит ли она на окружности радиуса R Даны координаты точки А(х1,у1). Определить, принадлежит ли эта точка отрезку [a,b]. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 4 |
Процедуру 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.
Оглавление : Уроки Паскаль. Графика.
Следующая статья : Построение системы координат (продолжение).
Предыдущий раздел:
Следующий раздел:
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 – цвет точки.
Следующий раздел:
Предыдущий раздел: