Код системы условий (логической системы), FPC.
Запись от Hrethgir размещена 18.08.2015 в 16:30
Показов 4997
Комментарии 6
|
Процедура проверяюща направление размещения вершин треугольника (по часовой, или против, стрелки), начало координат - вершина номер один. [PASCAL] 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; [/PASCAL] этот расчёт нужен только при неочевидном направлении последовательности вершин - когда треугольник лежит в одной области или в областях противоположных через начало отсчёта сетки. если разбить сетку координат на четыре области, то эта формула работает только когда области противоположны от начала координат или треугольник лежит в одной области, если они противоположны через ось - очевидное направление вершин треугольника. А так да - изначально формула одним своим видом мозг выносит:D [CODE]rezultat1:=SurfaceList.x[3]/SurfaceList.y[3]-SurfaceList.x[2]/SurfaceList.y[2];[/CODE] Впереди, это непростое написание простой программы "генератора карты высот и G-кода, ещё одна интересная процедура с тем-же стилем программирования, но другой логикой. |
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 6
Комментарии
-
Исправил ошибки.Запись от Hrethgir размещена 21.08.2015 в 15:43
-
Код с перспективой на молекулярные компьютеры.Запись от Hrethgir размещена 18.09.2016 в 10:04
-
Запись от Nikto размещена 18.09.2016 в 10:15
-
[QUOTE=Nikto;bt15439]А в чём перспектива?[/QUOTE]
перспектива в том, что никто не станет делать молекулярные компьютеры под толмуты "если"-программистов :), программа - механизм. перспектива в том, что вот такой стиль программирования реализуем на молекулярных компьютерах, и под всякое бла-бла не сделают молекулярных компьютеров, если ты хочешь писать код актуальность которого "день", никто конечно не против :). но вообще замут зашёл с небольшого спора с студентами и одним экспертом, они что-то говорили о том, что это не реализуемо (допускаю что эксперт просто не понял того, о чём я говорю).Запись от Hrethgir размещена 28.10.2016 в 19:01
-
Начал читать литературу по программированию шейдеров, и тут полез в фракталы, и вот с мнимым мне как-то сомнительна рациональность. Читаю свой метод, который придумал не взяв в внимание сложные рекомендуемые, и вот вспоминаю - как это я вывернул так себе извилины, что делил [B]X[/B] на [B]Y[/B] :D, но способ-то реальный, сетую что комменты не оставил, читаю код и вспоминаю. Нужно восстановить цепочку ту рассуждений... что-то мне в фракталах не понравилось...
Пять лет назад... много советчиков было, но такой бутер академический - не для меня, я люблю последовательность рассуждений, а не процесс диктовки.Запись от Hrethgir размещена 30.08.2020 в 21:14
-
этот расчёт нужен только при неочевидном направлении последовательности вершин - когда треугольник лежит в одной области или в областях противоположных через начало отсчёта сетки.
если разбить сетку координат на четыре области, то эта формула работает только когда области противоположны от начала координат или треугольник лежит в одной области, если они противоположны через ось - очевидное направление вершин треугольника.
Сорь что только через пять лет я дал пояснение, и то убогое. Но я вспомнил...теперь про фракталы читать надо, чего-то там замудрёно как-то.
А так да - изначально формула одним своим видом мозг выносит:D [CODE]rezultat1:=SurfaceList.x[3]/SurfaceList.y[3]-SurfaceList.x[2]/SurfaceList.y[2];[/CODE]
икс разделить на игрик у одной вершины, а потом ещё из этого вычесть такое-же другой вершины, чекануться можно :D, кажется что вообще никакой логики нету и быть не может в принципе :D...но сцуко она есть, просто не все так могут мозг вывернуть :D
блин всё, почему мне такой код достается что к каждой строке надо комментарии писать сцуко, и ведь это реально рационально - без косинусов и синусов, мне предлагали с ними формулы, а зачем они в такой простой задаче...они хавают быстродействие машины. ясен красен что быстродействием из-за одного треугольника не задастся, а когда их мла миллионы...Запись от Hrethgir размещена 30.08.2020 в 22:41


