В текущей версии интерпретатора поддерживаются:
Операторы присваивания и вызова [один оператор в строке].
Объявление составных построений [sub ... end sub].
Вызов составных построений в других составных построениях.
Выполнение циклов [for ... end for].
Измерители, элементы оформления [линии-выноски, размерные знаки, штриховки, заливки, стрелки].
Вывод пространственных координат точек [Z, !cout3D].
Не поддерживаются:
Вложенные операторы [ sub1 (sub2 (...)) ].
Вложенные циклы [for ... for ... end for ... end for].
Условный оператор [!if].
Списки.
Объектно-ориентированные объявления [операторы new и .].
Модификаторы стиля [через :].
Специальные символы
(Специальные символы: αβγδεζηθικλμνξοπρστυφχψω ∀∃∈∉∋∩∪∞∅°∠ ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ ≅≈≠≡⊂⊃⊄⊥)
Программа
sub p3d (x, y, z: name) vr = @vrd(O,x,true) X = @pab(x12,vr) hr = @hrd(O,y,true) A1 = PAB (vr,hr: {name}_1,-7,+11,green) hr = @hrd(O,z) A2 = PAB (vr,hr: {name}_2,+2,+9,red) ls1 = ls (A1,X) ls2 = ls (A2,X) !erase(vr,hr,X) ret(A1,A2,ls1,ls2) end sub sub edge3d(a,b:astyle,bstyle,cstyle) e1 = sab({a}1,{b}1:false,astyle) e2 = sab({a}2,{b}2:false,bstyle) l1 = ls({a}1s,{b}1s) l2 = ls({a}2s,{b}2s) es = sab({a}s,{b}s:false,cstyle) end sub PSIZE=1.5 [x12,O] = cs12(0,10) c0 = @ccx(O,40) Z = psp(c0,0.25:CROSS,black) X = psp(c0,0.5:CROSS,black) Y = psp(c0,0.75:CROSS,black) zy = sab(Y,Z:true,thin) // вершины [S1,S2,_,_] = p3d(55, 60, 85: S) [A1,A2,_,_] = p3d(90, 40, 15: A) [B1,B2,_,_] = p3d(35, 20, 15: B) [D1,D2,_,_] = p3d(70, 80, 15: D) [C1,C2,_,_] = p3d(15, 70, 15: C) // система координат перспективы [O1,O2,_,_] = p3d(130, 105, 55: O') cap(x12,_,+8,-5) tau1 = sxy(-130,20,-70,100:true,,black:τ_1) s1 = soa(tau1,O1:true,thin) P1 = pab(s1,tau1:P1,-14,+2,black) v = vr(P1) h = hr(O2) P2 = pab(v,h:P2,-8,-6,black) Px = pxy(120,20:P1^вр,+1,+10,black) Ox = pxy(120,50:) tm = trmv(P1,O1:Px,Ox) Ox = trobj(tm, O1) taux = trobj(tm,tau1) cap(Ox,O'_1^вр) cap(taux,τ_1^вр,-10,-5) v = vr(Px) P2x = pab(v,h:P_τ,+1,+9,black) lsp2 = ls(O2,P2x) lsp1 = sab(Px,Ox:false,thin) sub persp (A1,A2:name) ls1 = ls(A1,O1) A1s = pab(ls1,tau1:CROSS,green) A1x = trobj(tm,A1s) ls2 = ls(A2,O2) v = vr(A1s) A2s = pab(ls2,v:CROSS,red) ls3 = ls(A1s,A2s) h = hr(A2s) v = vr(A1x) A2x = pab(v,h:{name}_τ,+2,+9,red) ls4 = ls(A1x,A2x) ls5 = ls(A2s,A2x) !erase(v,h) ret(A2x,A1s,A2s) end sub [As,A1s,A2s] = persp (A1,A2:A) [Bs,B1s,B2s] = persp (B1,B2:B) [Cs,C1s,C2s] = persp (C1,C2:C) [Ds,D1s,D2s] = persp (D1,D2:D) [Ss,S1s,S2s] = persp (S1,S2:S) // ребра edge3d (A,B:thick,dashed,dashed) edge3d (A,D:thick,thick,thick) edge3d (B,C:thick,dashed,dashed) edge3d (D,C:thick,thick,thick) edge3d (A,S:thick,thick,thick) edge3d (B,S:thick,dashed,dashed) edge3d (C,S:thick,thick,thick) edge3d (D,S:thick,thick,thick) !erase(v,h) nav(-20,-30)
Графические команды
-- Точки
point = PXY (X, Y [,W]: [caption, cap-X, cap-Y])
point = PAB (line-a, line-b: [caption, cap-X, cap-Y])
point = PSP (obj, position| point-a, point-b, position: [caption, cap-X, cap-Y])
point-ideal = PIDEAL (line: [caption, cap-X, cap-Y])
point-real-part = PRE (complex-point: [caption, cap-X, cap-Y])
point-image-part-as-real = PIM (complex-point: [caption, cap-X, cap-Y])
point-real-and-image-part-as-real = PIM1 (complex-point: [caption, cap-X, cap-Y])
point-as-sum = PADD (point-a, point-b: [caption, cap-X, cap-Y])
point-as-difference = PSUB (point-a, point-b: [caption, cap-X, cap-Y])
point = PP (X: x^0-coef, x^1-coef, x^2-coef, ...: [caption, cap-X, cap-Y])
-- Прямые
line = SXY (X1, Y1, X2, Y2: [extension] [,style] [,color]: [caption, cap-X, cap-Y])
line = SAB (point-A, point-B: : [caption, cap-X, cap-Y])
line = SPA (line, point: : [caption, cap-X, cap-Y])
line = SOA (line, point: : [caption, cap-X, cap-Y])
line = SPF (point, angle, negative, line-to: : [caption, cap-X, cap-Y])
line = SKB (k-coeff, b-coeff [, x-flag]: : [caption, cap-X, cap-Y])
line = SABC (a-coeff, b-coeff, c-coeff: : [caption, cap-X, cap-Y])
arrow = ARROW (point-A, point-B: [style] [, color])
ls = LS (point-A, point-B: [length])
-- Окружности и дуги
circle = CCX (center-point, point|line|circle|V, diameterFlag: [style]: [caption, cap-X, cap-Y])
[circle, center-point] = CXYV (center-X, center-Y, V, diameter0flag: : [caption, cap-X, cap-Y])
[circle, center-point] = C2P (point-a, point-b: : [caption, cap-X, cap-Y])
[circle, center-point] = C3P (point-a, point-b, point-c: : [caption, cap-X, cap-Y])
[point-a, point-b] = PAC (line, circle: [caption, cap-X, cap-Y]: [caption, cap-X, cap-Y])
point-b = PAC2ND (line, circle, point-a: [caption, cap-X, cap-Y]: [caption, cap-X, cap-Y])
point-b = PAC2DIR (line, circle, point-a: [caption, cap-X, cap-Y]: [caption, cap-X, cap-Y])
[point-a, point-b] = P2C (circle-a, circle-b: [caption, cap-X, cap-Y]: [caption, cap-X, cap-Y])
point-b = P2C2ND (circle-a, circle-b, point-a: [caption, cap-X, cap-Y]: [caption, cap-X, cap-Y])
point-b = P2C2DIR (circle-a, circle-b, point-a: [caption, cap-X, cap-Y]: [caption, cap-X, cap-Y])
[line-a, line-b] = SCP (circle, point: : [caption, cap-X, cap-Y])
[line-a, point-a, line-b, point-b] = SCP (circle, external-point: : [caption, cap-X, cap-Y])
[arc, center-point] = A3P (point-a, point-b, point-c: : [style] [, color])
[arc, point-from, point-to] = APRA (center-point, radius, angle-from, angle-to: [style] [, color])
-- Кривые второго порядка
-- Полилинии
polyline = PLINE (code: [style] [, color])
PLINPADD (polyline, point-a [, point-b] [, point-c])
PLINS (polyline)
PLINZ (polyline)
SHADOW (polyline)
SECTION (polyline)
-- Линейки и измерители
value = MDX(point-a, point-b)
value = MDY(point-a, point-b)
value = MD(point, point-to|line|circle)
ruler = VR (x)
ruler = VRD (point, distance [, negative])
ruler = HR (y)
ruler = HRD (point, distance [, negative])
ruler = RD (line, distance [, negative])
obj = DL (point-a, point-b, pos-X, pos-Y: [caption, cap-X, cap-Y])
-- Преобразователи
T-object = TROFS (P-old: P-new)
T-object = TRMV (P1-old, P2-old | SEG-old: P1-new, P2-new | SEG-new)
T-object = TRSIM (P1-old, P2-old | SEG-old: P1-new, P2-new | SEG-new)
T-object = TRAFF (P1-old, P2-old, P3-old: P1-new, P2-new, P3-new)
T-object = TRMIR (point | line)
T-object = TRROD (line, point-old, point-new)
T-object = TRINV (circle)
[object, ...] = TROBJ (T-object, object, ...)
[object, ...] = TROBI (T-object, object, ...)
-- Системы координат начертательной геометрии
[axis, O] = CS12 (x, y)
[axis, O] = CS23 (x, y)
-- Разное
[x, y] = XY (point)
CAP (obj, caption [, cap-X, cap-Y])
CAPS (obj1, ...: caption-1 [, cap1-X, cap1-Y]: ...)
!ERASE (o1, o2, ...)
!RECSET (fname, max-recursion-depth)
!COUT (var1|precision-coeff|multiplier, var2|precision-coeff|multiplier, ...)
obj = LEADER (obj: [caption, cap-X, cap-Y])
/Пусто/