0 / 0 / 0
Регистрация: 27.08.2022
Сообщений: 53

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

19.04.2023, 20:12. Показов 2194. Ответов 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,496
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru