Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/37: Рейтинг темы: голосов - 37, средняя оценка - 4.84
0 / 0 / 0
Регистрация: 04.06.2011
Сообщений: 10

Координатные оси

04.06.2011, 10:14. Показов 7299. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые коллеги программисты !

Помогите пожалуйста разобраться начинающему программеру. Насколько мне известно при построении любых графических примитивов в паскале в компьютер заложена координатная ось X,Y идущая с первого пикселя экрана (координаты 0,0) вправо и вниз соответственно, например line (x1,y1,x2,y2), где x1,y1,x2,y2 - начальные и конечные точки т.е. координаты X,Y, всегда положительны.
В тоже время часто при построении фигуры в трехмерном пространстве встречается другая форма задания координат, а именно A[i].X=1 (или -1), A[i].Y=1 (или -1) , A[i].Z=1(или -1). После чего идет описание последовательности соединения ребер B[1].B=1, B[1].B2=2, B[2].B=2, B[3].B.=3 т.д. Здесь задаются 3 координаты, причем они могут быть как положительными, так и отрицательными.
Вопросы:
1. Почему и каким образом происходит трансформация координатной оси и в ней появляется ось апликат и отрицательные значения ?
2. Как выглядит новая координатная ось на двухмерном экране ? Какова ее направленность ?
3. Как определяется масштаб новой координатной оси, ведь часто в качестве значений X,Y,Z задаются числа (1,1,1) ?

Заранее спасибо за ответы.

С уважением,

Юрий
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.06.2011, 10:14
Ответы с готовыми решениями:

В файле x.dat – находятся координаты по оси Ох, а в файле y.dat, соответственно по оси Оу. Сгруппировать эти точки по 3.Помогите пожалуйста!!
Вот вся задача. Подскажите пожалуйста как эти файлы сгруппировать и потом использовать!!!!! У меня экзамен сегодня..утром!! Даны 2...

Нарисовать координатные оси, подписать их, подписать деления осей
Построить графики указанных функций. При построении графика функции выбрать такой масштаб, чтобы график занимал весь экран монитора....

Начертить координатные оси и отрезки
Пожалуйста, помогите) У меня вот в чем проблема: Имеется код (прикреплён файлом) для: 1. Черчения коорд. осей 2. Черчение отрезка в...

7
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
04.06.2011, 17:01
Цитата Сообщение от yuriy1905 Посмотреть сообщение
A[i].X=1 (или -1), A[i].Y=1 (или -1) , A[i].Z=1(или -1).
Объявляем пользовательский тип - точка.
Pascal
1
2
3
type Point=record
           x,y,z:integer;
           end;
Добавлено через 1 минуту
Если система координат прямоугольная, то так.
http://ru.wikipedia.org/wiki/%... 0%B0%D1%82
0
0 / 0 / 0
Регистрация: 04.06.2011
Сообщений: 10
04.06.2011, 17:08  [ТС]
Это я понимаю, сообщение запись. Как это связанно с координатными осями и режимом graph ?

Добавлено через 5 минут
т.е. получается в паскаль заложена и трехмерная система координат ? тогда в какой части экрана находится ее центр ?
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
04.06.2011, 17:14
Да нифига не заложено, экран же плоский. Трехмерные изображения это фикция на плоскости, ты что, стереометрию не изучал, начерталку и прочее?

Добавлено через 1 минуту
Как это связанно с координатными осями и режимом graph
Да никак. Этот тип может использоваться и просто для вычислений. А в графике выбираем точку начала координат например
x0:=getmaxX div 2;
y0:=getmaxY div 2;
рисуем оси как на картинке по ссылке, выбираем масштабы по осям, для чего определяем максимальные значения по модулю по каждой оси, или произвольно.
тогда точки будут наноситься относительно начала, например
a[1].x:=-5;a[1].y:=5; a[1].z:=4;
Вычисляются экранные координаты с учетом синусов-косинусов и все рисуется от нулевой точки.

Добавлено через 2 минуты
Посмотри тему
Графика в Турбо Паскаль
там есть примеры на трехмерную графику.
0
0 / 0 / 0
Регистрация: 04.06.2011
Сообщений: 10
04.06.2011, 17:47  [ТС]
Я брал программы из этого, но понял их не до конца. Вот отрывок программы. Здесь в процедуре draw в качестве координаты матрицы по столбцам используется только 1,2 (т.е. x и y), а в задании фигуры есть и координата z. Почему ?


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
procedure draw;
var
   x1, x2, y1, y2: integer;
   ver1, ver2: integer;
begin
   for i := 1 to 12 do begin
   ver1 := ribs[i,1];
   ver2 := ribs[i,2];
   x1 := round(par[ver1,1])+320;
   y1 := 240-round(par[ver1,2]);
   x2 := round(par[ver2,1])+320;
   y2 := 240-round(par[ver2,2]);
   line(x1,y1,x2,y2);
  end;
end;
 
begin
   par[1,1]:=0;    par[1,2]:=0;    par[1,3]:=0;
   par[2,1]:=0;    par[2,2]:=110;  par[2,3]:=0;
   par[3,1]:=175;  par[3,2]:=110;  par[3,3]:=0;
   par[4,1]:=175;  par[4,2]:=0;    par[4,3]:=0;
   par[5,1]:=0;    par[5,2]:=0;    par[5,3]:=150;
   par[6,1]:=0;    par[6,2]:=110;  par[6,3]:=150;
   par[7,1]:=175;  par[7,2]:=110;  par[7,3]:=150;
   par[8,1]:=175;  par[8,2]:=0;    par[8,3]:=150;
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
04.06.2011, 18:04
Потому что точку на экране можно вывести только двумя координатами, а третья служит для их вычислений.

Добавлено через 9 минут
Вот например рисуем трехмерное изображение. Значения по Z используются для вычислений, это высота пирамиды h и высота сечения s.

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
uses crt,graph;
const m=3;
type TPoint=record
            x,y:integer;
            end;
var a,h,s:integer;{storona,vysota,sechenie}
    f:real;   {koeff f=s/h}
    p:array[1..m]of TPoint;{sechenie, treugolnik}
    gd,gm:integer;{parametry InitGraph}
    k:char; {simvol vkluchenia sechenia}
    x0,y0,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7:integer;
begin
clrscr;
write('a=');readln(a);
write('h=');readln(h);
write('s=');readln(s);
InitGraph(gd,gm,'d\tp\bgi');{nastoiaschij put k bgi}
{Osi}
x0:=getmaxX div 2-50;y0:=getmaxY div 2;
x1:=x0+300;y1:=y0;x2:=x0-round((x1-x0)*0.71*0.71);y2:=y0+round((x1-x0)*0.71*0.71);
x3:=x0;y3:=y0-230;
setlinestyle(0,0,1);
line(x0,y0,x1,y1);line(x0,y0,x2,y2);line(x0,y0,x3,y3);
OuttextXY(x1-5,y1-15,'Y');OuttextXY(x2-5,y2-15,'X');OuttextXY(x3+10,y3,'Z');
{Piramida}
x4:=x0+20;y4:=y0+20;x5:=x4+a;y5:=y4;
x6:=round((x4+a/2)-a*0.82);y6:=y4+round(a*0.82);
y7:=y4-h+round(a*0.82*0.33); x7:=x0-y0+h+y7;
Setcolor(4);
line(x5,y5,x6,y6);line(x5,y5,x7,y7);line(x6,y6,x7,y7);
setlinestyle(1,0,1);
line(x4,y4,x5,y5); line(x6,y6,x4,y4);line(x4,y4,x7,y7);
outtextXY(x0,getmaxY-30,'Press Spase');
{Sechenie}
k:=readkey;
if k=#32 then
begin
f:=s/h;
p[1].x:=round(x4+(x7-x4)*f); p[1].y:=round(y4-(y4-y7)*f);
p[2].x:=round(x5-(x5-x7)*f); p[2].y:=round(y5-(y5-y7)*f);
p[3].x:=round(x6+(x7-x6)*f);p[3].y:=round(y6-(y6-y7)*f);
setcolor(11);
setlinestyle(0,0,1);
setfillstyle(3,11);
fillpoly(3,p);
end;
setcolor(4);
setlinestyle(1,0,1);
line(x4,y4,x5,y5);line(x4,y4,x6,y6);line(x4,y4,x7,y7);
setfillstyle(1,0);
bar(x0-10,getmaxY-50,x0+100,getmaxY-10);
outtextXY(x0,getmaxY-30,'Press Enter');
readln;
Closegraph;
end.
0
0 / 0 / 0
Регистрация: 04.06.2011
Сообщений: 10
04.06.2011, 18:55  [ТС]
Представленную Вами программу я понял. Объясните пожалуйста на моем примере. Взяв в качестве образца одну из программ на этом сайте, я составил программу для трехмерной фигуры.
1. Где в этой программе координата Z используется для вычисления двух других координат (X,Y) ?
2. Как сделать так, чтобы фигура была симметрична при повороте ?
Вложения
Тип файла: doc Программа.doc (46.0 Кб, 16 просмотров)
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
04.06.2011, 18:56
Не, я пас... Это для меня слишком утомительно.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.06.2011, 18:56
Помогаю со студенческими работами здесь

Нарисовать координатные оси, с засечками, и цифрами
Здравствуйте, форумчане. У меня есть вот такая программа: Program LR12; uses crt,graph; const n=8; var r,g,d,i,x0,y0:integer; ...

Изобразить на экране координатные оси X и Y с размеченной шкале и проставленными числами
помогите доделать: Изобразить на экране координатные оси X и Y с размеченной шкале и проставленными числами, соответствуют диапазону...

Построить треугольник, а затем перенести на десять единиц по оси OX и на пять единиц по оси OY
33. Треугольник задан координатами вершин. Построить его, а затем перенести на десять единиц по оси OX и на пять единиц по оси OY;

Построить треугольник, а затем перенести на десять единиц по оси OX и на пять единиц по оси OY
Треугольник задан координатами вершин. Построить его, а затем перенести на десять единиц по оси OX и на пять единиц по оси OY;в турбо...

Построить треугольник, а затем перенести на десять единиц по оси OX и на пять единиц по оси OY
Пусть в двумерной декартовой системе координат задана плоская фигура и пусть (x, y) – координаты одной из ее точек. Рассмотрим, как...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru