Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 27.08.2022
Сообщений: 53

Как вычислить координаты пикселей между двумя точками?

19.04.2023, 20:12. Показов 2173. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Нужно вычислить координаты пикселей между двумя точками...
Перепробовал все... Зашел в тупик.
Может кто сможет помочь?
Вот два моих примера:
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
procedure TIOElement.GetElmPixels2;
var
 n,n1: integer;
 TX,TY: integer;
 BX,BY,EX,EY: integer;
 TempPoints: array of TPoint;
 XLength,YLength,ALength: integer;
 ComLength: integer = 0;
 BeginInt: integer;
 ACount: integer;
begin
 for n:=0 to Length(StdPoints)-1 do begin
  if n<>Length(StdPoints)-1 then begin
   {Заносим координаты начальных и конечных точек}
   BX:=StdPoints[n].X; BY:=StdPoints[n].Y;
   EX:=StdPoints[n+1].X; EY:=StdPoints[n+1].Y;
   if (BX<EX) {or (BX=EX)} then XLength:=(EX-BX) else XLength:=(BX-EX);
   if (BY<EY) {or (BY=EY)} then YLength:=(EY-BY) else YLength:=(BY-EY);
   if (XLength>YLength) or (XLength=YLength) then ALength:=XLength else ALength:=YLength;
   {if (BX<EX) or (BX=EX) then TX:=BX else TX:=EX;
   if (BY<EY) or (BY=EY) then TY:=BY else TY:=EY;}
   TX:=BX; TY:=BY;
   SetLength(TempPoints,ALength);
   for n1:=1 to ALength do begin
    if BX<EX then if TX<EX then Inc(TX,1);
    if BX>EX then if TX>EX then Dec(TX,1);
    if BY<EY then if TY<EY then Inc(TY,1);
    if BY>EY then if TY>EY then Dec(TY,1);
    TempPoints[n1-1]:=Point(TX,TY);
   end;
  BeginInt:=ComLength;
  ComLength:=ComLength+ALength;
  SetLength(PixelPoints,ComLength);
  ACount:=0;
  end;
  for n1:=BeginInt to Length(PixelPoints)-1 do begin
   PixelPoints[n1].X:=TempPoints[ACount].X;
   PixelPoints[n1].Y:=TempPoints[ACount].Y;
   Inc(ACount,1);
  end;
 end;
end;
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
procedure TIOElement.GetElmPixels;
var
 n,n1: integer;
 ACount: integer = 1;
 BX,BY,EX,EY: integer;
 XCount: integer = 1;
 YCount: integer = 1;
 PixPntX: array of integer;
 PixPntY: array of integer;
 PixelsCount: array of TPoint;
begin
 for n:=0 to Length(StdPoints)-1 do begin
  if n<>Length(StdPoints)-1 then begin
   {Заносим координаты начальных и конечных точек}
   BX:=StdPoints[n].X; BY:=StdPoints[n].Y;
   EX:=StdPoints[n+1].X; EY:=StdPoints[n+1].Y;
   {Form5.Memo2.Lines.Add('Элемент №'+IntToStr(ElmNum));
   Form5.Memo2.Lines.Add(IntToStr(BX)+' - '+IntToStr(EX));
   Form5.Memo2.Lines.Add(IntToStr(BY)+' - '+IntToStr(EY));}
   {if (BX<>EX) and (BY<>EY) then begin}
    {ПО ОСИ X}
    {Если BX = EX}
    if BX=EX then begin
     {Form5.Memo2.Lines.Add('BX = EX');}
     if BY<EY then begin
      for n1:=BY to EY do begin
       SetLength(PixPntX,XCount);
       PixPntX[XCount-1]:=BX;
       Inc(XCount,1);
       {Form5.Memo2.Lines.Add('XCount = '+IntToStr(XCount));}
      end;
     end;
     if BY>EY then begin
      for n1:=BY downto EY do begin
       SetLength(PixPntX,XCount);
       PixPntX[XCount-1]:=BX;
       Inc(XCount,1);
       {Form5.Memo2.Lines.Add('XCount = '+IntToStr(XCount));}
      end;
     end;
    end;
    {Если BX < EX}
    if BX<EX then begin
     {Form5.Memo2.Lines.Add('BX < EX');}
     for n1:=BX to EX do begin
      SetLength(PixPntX,XCount);
      PixPntX[XCount-1]:=n1;
      Inc(XCount,1);
      {Form5.Memo2.Lines.Add('XCount = '+IntToStr(XCount));}
     end;
    end;
    {Если BX > EX}
    if BX>EX then begin
     {Form5.Memo2.Lines.Add('BX > EX');}
     for n1:=BX downto EX do begin
      SetLength(PixPntX,XCount);
      PixPntX[XCount-1]:=n1;
      Inc(XCount,1);
      {Form5.Memo2.Lines.Add('XCount = '+IntToStr(XCount));}
     end;
    end;
    {ПО ОСИ Y}
    {Если BY = EY}
    if BY=EY then begin
     {Form5.Memo2.Lines.Add('BY = EY');}
     if BX<EX then begin
      for n1:=BX to EX do begin
       SetLength(PixPntY,YCount);
       PixPntY[YCount-1]:=BY;
       Inc(YCount,1);
       {Form5.Memo2.Lines.Add('YCount = '+IntToStr(YCount));}
      end;
     end;
     if BX>EX then begin
      for n1:=BX downto EX do begin
       SetLength(PixPntY,YCount);
       PixPntY[YCount-1]:=BY;
       Inc(YCount,1);
       {Form5.Memo2.Lines.Add('YCount = '+IntToStr(YCount));}
      end;
     end;
    end;
    {Если BY < EY}
    if BY<EY then begin
     {Form5.Memo2.Lines.Add('BY < EY');}
     for n1:=BY to EY do begin
      SetLength(PixPntY,YCount);
      PixPntY[YCount-1]:=n1;
      Inc(YCount,1);
      {Form5.Memo2.Lines.Add('YCount = '+IntToStr(YCount));}
     end;
    end;
    {Если BY > EY}
    if BY>EY then begin
     {Form5.Memo2.Lines.Add('BY > EY');}
     for n1:=BY downto EY do begin
      SetLength(PixPntY,YCount);
      PixPntY[YCount-1]:=n1;
      Inc(YCount,1);
      {Form5.Memo2.Lines.Add('YCount = '+IntToStr(YCount));}
     end;
    end;
   {end;}
  end;
 end;
 {Form5.Memo2.Lines.Add('PixPntX = '+IntToStr(Length(PixPntX))+' PixPntY = '+IntToStr(Length(PixPntY)));}
 SetLength(PixelPoints,Length(PixPntX));
 for n:=0 to Length(PixPntX)-1 do begin
  PixelPoints[n].X:=PixPntX[n];
  PixelPoints[n].Y:=PixPntY[n];
 end;
end;
Импортирую точки из DXF.
При отрисовке, некоторые элементы рисуются нормально, но большинство превращается в полное безобразие.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.04.2023, 20:12
Ответы с готовыми решениями:

Вычислить расстояние между двумя точками с координатами х1, у1 и х2, у2.
Вычислить расстояние между двумя точками с координатами х1, у1 и х2, у2.

Вычислить расстояние между двумя точками с заданными координатами
создать приложение для решение задачи Вычислить расстояние между двумя точками с заданными координатами

Напишите функции вычисления расстояния между двумя точками,заданными своими координатами (Distance) и нахождения координаты середины между двумя точка
Помогите,пожалуйста! Напишите функции вычисления расстояния между двумя точками,заданными своими координатами (Distance) и нахождения...

21
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,495
26.04.2023, 09:43
Студворк — интернет-сервис помощи студентам
Yujiro:
Delphi
1
  r := Sqrt(Sqr(cX - MouseX) + Sqr(cY - MouseY));
где cX и cY - координаты центра окружности, MouseX и MouseY - координаты мыши, r - расстояние между центром окружности и мышью.
0
0 / 0 / 0
Регистрация: 27.08.2022
Сообщений: 53
26.04.2023, 16:15  [ТС]
AzAtom, спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.04.2023, 16:15

Вычислить длину пути между двумя точками с помощью структуры "Координаты"
Определить структуру &quot;Координаты&quot;,включающую три целочисленных поля, определяющих координаты точки в трехмерном пространстве(x,y,z). ...

Вычислить расстояние между двумя точками X1,Y1 и X2,Y2
Вычислить расстояние между двумя точками X1,Y1 и X2,Y2.

Вычислить расстояние между двумя точками
Нужно решить задачу средствами программирования MathCAD (для этого воспользоваться документом Программирование в MathCAD). Я её вроде...

Вычислить расстояние между двумя точками
вычислить расстояние между двумя точками с координатами (х1,х2) и (у1,у2). Координаты вводятся с клавиатуры з.ы. знаю что где-то есть но...

Вычислить расстояние между двумя точками
Вычислить расстояние между двумя точками с координатами (Х1,У1) и (Х2,У2).


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru