Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2014, 02:59   #1
Otar4ik
Форумчанин
 
Регистрация: 16.04.2010
Сообщений: 123
По умолчанию Стрелки в Pascal ABC

Доброй ночи!
Рисую результирующий граф в PascalABC.NET,почти готов.

Посмотрел в встроенной справке все процедуры(или не все) модуля Graph.

Так вот там не нашел стрелок,мне надо указывать из какого состояния выходит.Например из S в C и чтобы стрелочка шла на С.

что вы используете в таком случае?
SetPixel пытался вместо стрелочек точки,но там пока не дошли руки.
Otar4ik вне форума Ответить с цитированием
Старый 19.08.2014, 10:49   #2
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

О, я оказывается делал что-то такое.
http://forum.sources.ru/index.php?sh...ndpost&p=91619

Код:
uses
  GraphABC;

var
  h, w, x3, y3, x1, y1, x2, y2, x4, y4, x5, y5, i, j: LongInt;
  nx, ny, vx, vy, v: real;
  grd,grm:Integer;

begin{ Set 256-colours graphics mode }
  //InitGraph(grd,grm,'');
  //SetSVGAMode(640, 480, 4, LfbOrBanked);
  { Сначала нужно найти пару ортогональных векторов (Vx, Vy) и (nx, ny). }
  { V - направлен из точки 1 в точку 2 (по направлению движения)         }
  x1 := 320;
  //GetMaxX div 2;
  y1 := 240;
  //GetMaxY div 2;
  x2 := x1 + 20;
  y2 := y2;
  Vx := x2 - x1;
  Vy := y2 - y1;
  V  := sqrt(Vx * Vx + Vy * Vy);
  Vx := Vx / V;Vy := Vy / V;
  { Вектор n - перпендикулярен направлению движения }
  nx := Vy;
  ny := -Vx;
  h := 15;
  w := 10;
  { Обозначим h и w - размеры рисуемой стрелки. Находим точку (x3,y3) лежащую на }
  { прямой проходящей из 1 в 2 и находящейся на расстоянии h от точки 2.         }
  x3 := x2 - Round(h * Vx);
  y3 := y2 - Round(h * Vy);
  { Теперь найдем точки (x4,y4) и (x5,y5) расположенные "по бокам" - зазубрины }
  { стрелки }
  x4 := x3 + Round(w * nx);
  y4 := y3 + Round(w * ny);
  x5 := x3 - Round(w * nx);
  y5 := y3 - Round(w * ny);
  { Ну вот и все, осталось нарисовать }  
  MoveTo(x1, y1);  
  LineTo(x2, y2);  
  LineTo(x4, y4);  
  LineTo(x5, y5);  
  LineTo(x2, y2);
  //ReadKey;    
  { Get the key pressed     }  
  //CloseGraph; 
  { Return to the text mode }
end.

Последний раз редактировалось ZX Spectrum-128; 19.08.2014 в 11:02.
ZX Spectrum-128 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построить алгоритм в виде блок-схем и написать соответствующую программу на языке Pascal / Pascal ABC IgorMyakota Паскаль, Turbo Pascal, PascalABC.NET 9 06.03.2014 07:32
pascal abc, pascal turbo. выборка данных из одного .txt в другой ТипичныйСтудент Помощь студентам 6 27.04.2013 15:29
Программы в Pascal, среда pascal ABC. Лабораторные работы Одинокая Волчица Фриланс 8 10.02.2012 20:09
Неудобство ABC Pascal и глюк Borland Pascal proser93 Помощь студентам 0 19.11.2011 19:01
Turbo Pascal or Pascal ABC Ikram Паскаль, Turbo Pascal, PascalABC.NET 0 27.04.2010 13:44