В текущей версии интерпретатора поддерживаются:
Операторы присваивания и вызова [один оператор в строке].
Объявление составных построений [sub ... end sub].
Вызов составных построений в других составных построениях.
Выполнение циклов [for ... end for].
Измерители, элементы оформления [линии-выноски, размерные знаки, штриховки, заливки, стрелки].
Вывод пространственных координат точек [Z, !cout3D].
Не поддерживаются:
Вложенные операторы [ sub1 (sub2 (...)) ].
Вложенные циклы [for ... for ... end for ... end for].
Условный оператор [!if].
Списки.
Объектно-ориентированные объявления [операторы new и .].
Модификаторы стиля [через :].
Специальные символы
(Специальные символы: αβγδεζηθικλμνξοπρστυφχψω ∀∃∈∉∋∩∪∞∅°∠ ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ ≅≈≠≡⊂⊃⊄⊥)
Программа
PSIZE=1.5 [x12,O] = cs12 (-80,40) Ot = pxy(-80,-50:O_t) sub p4d(x,y,z,t:name) v = @vrd(O,x,true) h = @hrd(O,y,true) Ay = pab(v,h:{name}1,-5,12) h = @hrd(O,z) Az = pab(v,h:{name}2,-5,-6) h = @hrd(Ot,t) At = pab(v,h:{name}_t,-3,10) !erase(v,h) style(At,Ay:,#09f:,#f09) ret(Ay,Az,At) end sub sub edge (name1,name2) aby = sab({name1}y,{name2}y:false,thin) abz = sab({name1}z,{name2}z:false,thin) abt = sab({name1}t,{name2}t:false,thin) ret (aby,abz,abt) end sub [Ay,Az,At]= p4d(5,0,0,0:A) [By,Bz,Bt]= p4d(70,10,10,0:B) [Cy,Cz,Ct]= p4d(50,60,0,0:C) [Dy,Dz,Dt]= p4d(30,20,60,0:D) [Sy,Sz,St]= p4d(0,60,30,50:S) caps(St,Ay,Az,O:_,-2,-6:A_1=A_2,-8,12::_,-2,-5) [ABy,ABz,ABt] = edge(A,B) [ACy,ACz,ACt] = edge(A,C) [ADy,ADz,ADt] = edge(A,D) [ASy,ASz,ASt] = edge(A,S) [BCy,BCz,BCt] = edge(B,C) [BDy,BDz,BDt] = edge(B,D) [BSy,BSz,BSt] = edge(B,S) [CDy,CDz,CDt] = edge(C,D) [CSy,CSz,CSt] = edge(C,S) [DSy,DSz,DSt] = edge(D,S) Ft = @pxy(-140,-56:F_t,,,black) Gt = @pxy(-50,-90:G_t,,,black) taut = sab(Ft,Gt:true,helper:τ_t,-24,4) sub intersect (aby, abz, abt:name) At = pab(taut,abt:{name}_t,-4,-4) v = @vr(At) Az = pab(v,abz:{name}_2,-3,-4) Ay = pab(v,aby:{name}_1,-3,12) style(At,Ay:,#09f:,#f09) !erase(v) ret (Ay,Az,At) end sub [Asy,Asz,Ast] = intersect (ASy,ASz,ASt:A') [Bsy,Bsz,Bst] = intersect (BSy,BSz,BSt:B') [Csy,Csz,Cst] = intersect (CSy,CSz,CSt:C') [Dsy,Dsz,Dst] = intersect (DSy,DSz,DSt:D') caps(Bsy,Csy,Asz:_,-1,10:_,-2,12:_,2,2) Fst = @pxy(-20,-70:F'_t) Gst = @pxy(25,-70:G'_t) taust = sab(Fst,Gst:true,helper:τ^1_t,-16,-4) tm = trmv (Bst,Ast:Fst,Gst) k = sxy(60,50,110,100:true,helper:k,-15,-2) sub move (name) Ast = trobj(tm,{name}st) v = vr(Ast) h = hr({name}sz) Asz = pab(v,h:{name}'^1_2,-2,12) h = hr({name}sy) Asy = pab(v,h:{name}'^1_1,-6,12) cap(Ast,{name}'^1_t,-4,-6) h = hr(Asy) X = pab(h,k:CROSS) lsy = ls(X,Asy) v = vr(X) h = hr(Asz) As3 = pab(v,h:{name}'_3,1,12) lst = ls(X,As3) ls23 = ls(Asz,As3) !erase(v,h) ret(Asy,Asz,Ast,As3) end sub [Aty,Atz,Att,At3] = move(A) [Bty,Btz,Btt,Bt3] = move(B) [Cty,Ctz,Ctt,Ct3] = move(C) [Dty,Dtz,Dtt,Dt3] = move(D) caps(Dty,Aty,Atz,Dt3,Dtz,At3:_,-2,10:_,-2,-4:_,-2,-4:_,-4,-6:_,-4,-6:_,2,-4) sub edge2 (name1,name2:sty,stz,st3) aby = sab({name1}ty,{name2}ty:false,sty) abz = sab({name1}tz,{name2}tz:false,stz) ab3 = sab({name1}t3,{name2}t3:false,st3) ret (aby,abz,ab3) end sub edge2 (A,B:thick,dashed,dashed) edge2 (A,C:thick,thick,dashed) edge2 (A,D:thick,thick,dashed) edge2 (B,C:thick,thick,thick) edge2 (B,D:thick,thick,thick) edge2 (C,D:thick,thick,thick)
Графические команды
-- Точки
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])
/Пусто/