В текущей версии интерпретатора поддерживаются:
Операторы присваивания и вызова [один оператор в строке].
Объявление составных построений [sub ... end sub].
Вызов составных построений в других составных построениях.
Выполнение циклов [for ... end for].
Измерители, элементы оформления [линии-выноски, размерные знаки, штриховки, заливки, стрелки].
Вывод пространственных координат точек [Z, !cout3D].
Не поддерживаются:
Вложенные операторы [ sub1 (sub2 (...)) ].
Вложенные циклы [for ... for ... end for ... end for].
Условный оператор [!if].
Списки.
Объектно-ориентированные объявления [операторы new и .].
Модификаторы стиля [через :].
Специальные символы
(Специальные символы: αβγδεζηθικλμνξοπρστυφχψω ∀∃∈∉∋∩∪∞∅°∠ ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ ≅≈≠≡⊂⊃⊄⊥)
Программа
nav(-50,60:0.5) PSIZE=1.2 // ----------- сфера R=55 O1=pxy(0,0:O_1,-12,8) O2=pxy(0,-120:O_2,-12,8) c1=ccx(O1,R) c2=ccx(O2,R) // плоский инвертор относительно c1 t=trinv(c1) //A1=pxy(15,10:A_1) //A2=pxy(15,-85:A_2) // ------------ тор // центр Xt=35 Zt=10 h0=hr(O1) ht=@hrd(O2,Zt) vt=vrd(O2,Xt) T2=pab(ht,vt:T_2) T1=pab(vt,h0:T_1) // очерки Rt = 20 rt = 10 vo=@vrd(T2,Rt) M2=@pab(ht,vo) t2=ccx(M2,rt:thin) U2=@psp(t2,0) U1=U2 V2=@psp(t2,0.5) a1=ccx(T1,vo:dashdotted) vo=@vr(U2) u1=ccx(T1,vo:thin) vo=@vr(V2) v1=ccx(T1,vo:thin) tr=@trmir(vt) M1=@trobj(tr,M2) t1=ccx(M1,rt:thin) U2=@psp(t2,0.75) V2=@psp(t1,0.75) bot=sab(V2,U2:false,thin) U2=@psp(t2,0.25) V2=@psp(t1,0.25) top=sab(V2,U2:false,thin) sub inv3d(P1, P2) s1=sab(O1,P1:true,helper) s2=sab(O2,P2:true,helper) d=@mdy(P2,O2) //!cout(d) r1=@soa(s1,P1:thin) q1=@rd(s1,d,true) As=@pab(r1,q1) Ai=@trobj(t,As) ri=@spa(r1,Ai) Ai1=pab(ri,s1) v=@vr(Ai1) Ai2=pab(v,s2) !erase(d,r1,q1,ri,v,As,Ai) // s1,s2 ret(Ai1, Ai2) end sub sub invtoruspt (P) // P - одна точка очерковой окружности t2 // tr - аффинный преобразователь // w - проекция сечения тора на П1 (не поможет для вертикальных) Ps=@trobj(tr,P) v=@vr(Ps) S=@pab(v,w) [I1,I2]=@inv3d(S,Ps) d=@mdy(T2,I2) z(I1,d) ret(I1) !erase(v,S,d,Ps) end sub for (62) index in [0:1) i=psp(u1,index) w=sab(T1,i) j=pac2dir(w,a1,i) vs=vr(i) va=vr(j) QU=pab(vs,ht) QT=pab(va,ht) QV=pab(va,top) tr=traff(M2,U1,U2:QT,QU,QV) row$=prow(invtoruspt,t2:0.01,,64) !cout3d(row$) end for
Графические команды
-- Точки
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])
/Пусто/