Форум программистов, компьютерный форум, киберфорум
Hretgir
Войти
Регистрация
Восстановить пароль
Оценить эту запись

Код системы условий (логической системы), FPC.

Запись от Hretgir размещена 18.08.2015 в 16:30
Обновил(-а) Hretgir 31.08.2020 в 07:30

Процедура проверяюща направление размещения вершин треугольника (по часовой, или против, стрелки), начало координат - вершина номер один.
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
 procedure Ordering;
 //type TValueSign = -1..1;
 var
   procinstruction: integer;
   rezultat,rezultat1:extended;
   arrproccond: arr;
   napravleniesumm,napravlen:boolean;
//   function Sign(
//     const AValue: Extended
//   ):TValueSign; overload;
//   begin
//end;
procedure turn;//поворот
var
  x2,x3,y2,y3:extended;
begin
SurfaceList := ASurfaceList[copyTimeBoxMaxY.IDsurface];
x3:=SurfaceList.x[2];
y3:=SurfaceList.y[2];
x2:=SurfaceList.x[3];
y2:=SurfaceList.y[3];
SurfaceList.x[2]:=x2;
SurfaceList.y[2]:=y2;
SurfaceList.x[3]:=x3;
SurfaceList.y[3]:=y3;
ASurfaceList[copyTimeBoxMaxY.IDsurface]:=SurfaceList;
end;
 procedure smenanapravlenia;/////////////////////////////////////////////процедура с параметром, надо сделать так
begin
napravleniesumm:=not(napravleniesumm);
end;
 procedure napravlenie;/////////////////////////////////////////////////////////////////////////////////////////////////////////
 begin
 napravlen:=true;
 napravlen:=napravlen=napravleniesumm;
 raise Exception.Create('napravlenie');
 end;
 
 procedure line;
begin
raise Exception.Create('line');
end;
 procedure condition;//сравнение
begin
if rezultat=0 then ///////////////
  begin
    arrproccond[procinstruction];
    procinstruction:=procinstruction+1;
  end;
end;
 procedure sistemscondition;
begin
try
napravleniesumm:=true;
procinstruction:=0;
rezultat1:=SurfaceList.x[3]/SurfaceList.y[3]-SurfaceList.x[2]/SurfaceList.y[2];
rezultat:=rezultat1;
condition;
rezultat:=SurfaceList.y[3] - abs(SurfaceList.y[3]);
condition;
procinstruction:=procinstruction-1;
rezultat:=SurfaceList.y[2] - abs(SurfaceList.y[2]);
condition;
rezultat:=rezultat1-abs(rezultat1);
condition;
arrproccond[3];
except
end;
end;
 
begin
arrproccond[0]:=@line;
arrproccond[1]:=@smenanapravlenia;
arrproccond[2]:=@napravlenie;
arrproccond[3]:=@turn;
sistemscondition;
end;


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

А так да - изначально формула одним своим видом мозг выносит
Код:
rezultat1:=SurfaceList.x[3]/SurfaceList.y[3]-SurfaceList.x[2]/SurfaceList.y[2];

Впереди, это непростое написание простой программы "генератора карты высот и G-кода, ещё одна интересная процедура с тем-же стилем программирования, но другой логикой.
Показов 1301 Комментарии 6
Всего комментариев 6
Комментарии
  1. Старый комментарий
    Исправил ошибки.
    Запись от Hretgir размещена 21.08.2015 в 15:43 Hretgir вне форума
  2. Старый комментарий
    Код с перспективой на молекулярные компьютеры.
    Запись от Hretgir размещена 18.09.2016 в 10:04 Hretgir вне форума
  3. Старый комментарий
    Аватар для Nikto
    Цитата:
    Сообщение от Hretgir Просмотреть комментарий
    Код с перспективой на молекулярные компьютеры.
    А в чём перспектива?
    Запись от Nikto размещена 18.09.2016 в 10:15 Nikto вне форума
  4. Старый комментарий
    Цитата:
    Сообщение от Nikto Просмотреть комментарий
    А в чём перспектива?
    перспектива в том, что никто не станет делать молекулярные компьютеры под толмуты "если"-программистов , программа - механизм. перспектива в том, что вот такой стиль программирования реализуем на молекулярных компьютерах, и под всякое бла-бла не сделают молекулярных компьютеров, если ты хочешь писать код актуальность которого "день", никто конечно не против . но вообще замут зашёл с небольшого спора с студентами и одним экспертом, они что-то говорили о том, что это не реализуемо (допускаю что эксперт просто не понял того, о чём я говорю).
    Запись от Hretgir размещена 28.10.2016 в 19:01 Hretgir вне форума
    Обновил(-а) Hretgir 28.10.2016 в 19:05
  5. Старый комментарий
    Начал читать литературу по программированию шейдеров, и тут полез в фракталы, и вот с мнимым мне как-то сомнительна рациональность. Читаю свой метод, который придумал не взяв в внимание сложные рекомендуемые, и вот вспоминаю - как это я вывернул так себе извилины, что делил X на Y , но способ-то реальный, сетую что комменты не оставил, читаю код и вспоминаю. Нужно восстановить цепочку ту рассуждений... что-то мне в фракталах не понравилось...

    Пять лет назад... много советчиков было, но такой бутер академический - не для меня, я люблю последовательность рассуждений, а не процесс диктовки.
    Запись от Hretgir размещена 30.08.2020 в 21:14 Hretgir вне форума
    Обновил(-а) Hretgir 30.08.2020 в 21:17
  6. Старый комментарий
    этот расчёт нужен только при неочевидном направлении последовательности вершин - когда треугольник лежит в одной области или в областях противоположных через начало отсчёта сетки.
    если разбить сетку координат на четыре области, то эта формула работает только когда области противоположны от начала координат или треугольник лежит в одной области, если они противоположны через ось - очевидное направление вершин треугольника.
    Сорь что только через пять лет я дал пояснение, и то убогое. Но я вспомнил...теперь про фракталы читать надо, чего-то там замудрёно как-то.
    А так да - изначально формула одним своим видом мозг выносит
    Код:
    rezultat1:=SurfaceList.x[3]/SurfaceList.y[3]-SurfaceList.x[2]/SurfaceList.y[2];
    икс разделить на игрик у одной вершины, а потом ещё из этого вычесть такое-же другой вершины, чекануться можно , кажется что вообще никакой логики нету и быть не может в принципе ...но сцуко она есть, просто не все так могут мозг вывернуть
    блин всё, почему мне такой код достается что к каждой строке надо комментарии писать сцуко, и ведь это реально рационально - без косинусов и синусов, мне предлагали с ними формулы, а зачем они в такой простой задаче...они хавают быстродействие машины. ясен красен что быстродействием из-за одного треугольника не задастся, а когда их мла миллионы...
    Запись от Hretgir размещена 30.08.2020 в 22:41 Hretgir вне форума
    Обновил(-а) Hretgir 31.08.2020 в 07:30
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.