Clasa Întreg
Întregii reprezintă mulţimea numerelor întregi Z. În interiorul acestei lucrări, întregii sunt utilizaţi pentru indexi, stocarea numerelor de elemente ale diferitelor clase superioare etc.
-
Operatori:
Op
|
Expresie
|
Explicaţii
|
Op
|
Expresie
|
Explicaţii
|
=
|
C = A
|
Egalitatea 5 = 5
|
==
|
C == A
|
(C=A)?1:0;
|
+
|
C = A + B
|
Adunarea 5+3= 8
|
+=
|
C += A
|
C = C + A
|
-
|
C = A – B
|
Scăderea 5–3= 2
|
-=
|
C -= A
|
C = C – A
|
*
|
C = A * B
|
Înmulţirea 5*3=15
|
*=
|
C *= A
|
C = C * A
|
/
|
C = A / B
|
Înpărţirea 5/3= 1
|
/=
|
C /= A
|
C = C / A
|
!
|
C = !A
|
NEGAŢIA !5 = 2;!101 =010
|
!=
|
C != A
|
C = !A
|
&
|
C = A & B
|
ŞI logic 5&3= 1; 101&110=001
|
&=
|
C &= A
|
C = C & A
|
|
|
C = A | B
|
SAU logic 5|3= 7; 101&110=111
|
|=
|
C |= A
|
C = C | A
|
%
|
C = A % B
|
SAU exclusiv5%3= 6; 101&110=110
|
%=
|
C %= A
|
C = C % A
|
ŞI
|
C = A ŞI B
|
C = (A&B>0)?1:0
|
INT
|
C INT rA
|
INT 4.5 =4
|
SAU
|
C = A SAU B
|
C = (A|B>0)?1:0
|
MIN
|
C MIN A
|
C = MIN(A,C)
|
%%
|
C = A %% B
|
C = (A%B>0)?1:0
|
MAX
|
C MAX A
|
C = MAX(A,C)
|
>
|
C = A > B
|
C = (A>B)?1:0
|
>=
|
C = A>=B
|
C=(A>=B)?1:0
|
<
|
C = A < B
|
C = (A |
<=
|
C = A<=B
|
C=(A<=B)?1:0
| -
Metode:
NimicMin (Întreg nA, nB); //întoarce minimul dintre valorile nA şi nB
NimicMax (Întreg nA, nB); //întoarce maximul dintre valorile nA şi nB
NimicAbs (Întreg nA); //întoarce valoarea absolută
Întreg Min (Întreg nA, nB); //întoarce minimul dintre valorile nA şi nB
Întreg Max (Întreg nA, nB); //întoarce maximul dintre valorile nA şi nB
Întreg Abs (Întreg nA); //întoarce valoarea absolută
nNumărPuncte – numărul de puncte;
Clasa Boolean
Booleenii sunt o clasă particulară derivată din întregi (deci moştenesc toate proprietăţile acestora). Rolul lor este acela de a asigura implementarea logicii matematice.
Singurele valori posibile ale booleenilor sunt ADEVĂRAT (= 1) şi FALS (= 0).
Toţi operatorii posibili pe Clasa Întreg sunt aplicabili specializării (clasei derivate) Boolean; evident, nu toţi îşi au sensul.
Toate metodele de la Clasa Întreg sunt moştenite.
bStart – variabila booleană Start;
Clasa Real
Realii sau numerele reale din R. Reprezintă o clasă elementară descrisă pentru a înţelege operaţiile executate cu numere reale. Toate operaţiile, metodele şi funcţiile asociate pot fi extinse foarte uşor la clasele mai evoluate: punct, bază vectorială etc.
-
Operatori:
Op
|
Expresie
|
Explicaţii
|
Op.
|
Expresie
|
Explicaţii
|
=
|
C = A
|
Egalitatea 5.0 = 5.0
|
==
|
C == A
|
(C=A)?1.0:0.0
|
+
|
C = A + B
|
Adunarea 5.0+3.0= 8.0
|
+=
|
C += A
|
C = C + A
|
-
|
C = A – B
|
Scăderea 5.0–3.0= 2.0
|
-=
|
C -= A
|
C = C – A
|
*
|
C = A * B
|
Înmulţirea 5.0*3.0=15.0
|
*=
|
C *= A
|
C = C * A
|
/
|
C = A / B
|
Împărţirea 5.0/3.0= 1.6
|
/=
|
C /= A
|
C = C / A
|
|
|
|
Real
|
C real nA
|
4.0 = real 4
|
|
|
|
min
|
C min A
|
C = min(A,C)
|
|
|
|
max
|
C max A
|
C = max(A,C)
|
>
|
C = A > B
|
C = (A>B)?1.0:0.0
|
>=
|
C = A>=B
|
(A>=B)?1.0:0.0
|
<
|
C = A < B
|
C = (A |
<=
|
C = A<=B
|
(A<=B)?1.0:0.0
| -
Metode:
NimicMin (Real rA, rB); //întoarce minimul dintre valorile rA şi rB
NimicMax (Real rA, rB); //întoarce maximul dintre valorile rA şi rB
NimicMorf(Real rA, rB, rP = 0.5); //întoarce rA * rP + rB * (1.0 - rP)
NimicAbs (Real rA); //întoarce valoarea absolută
Real Min (Real rA, rB); //întoarce minimul dintre valorile rA şi rB
Real Max (Real rA, rB); //întoarce maximul dintre valorile rA şi rB
Real Morf(Real rA, rB, rP = 0.5); //întoarce rA * rP + rB * (1.0 - rP)
Real Abs (Real rA); //întoarce valoarea absolută
rMin, rMax – valorile minim şi maxim;
Clasa Punct
Punctele sunt entităţi elementare folosite de către toate clasele vectoriale superioare, pentru a stoca valorile diferitelor entităţi care le compun.
De menţionat că, pentru simplicitate, în decursul lucrării se vor folosi doar puncte din R3. Se poate menţiona aici că, în domeniul ştiinţei sunt folosite puncte în mai multe dimensiuni Rn sau puncte cu construcţie specială pentru suprafeţe superioare R5 u, v, x, y, z, unde u, v sunt coordonatele parametrice ale suprafeţei de pe care derivă.
Pe clasa Punct se aplică exact aceleaşi tipuri de operaţii ca şi la Clasa Real, corespunzător fiecărui membru rX, rY, rZ.
Pentru a da consistenţă se implementează operaţiile cu scalari de tip real sau întreg, care pot substitui coordonatele unui punct, spre exemplu:
pP0(2.0); //pP0.rX = 2.00; pP0.rY = 2.00; pP0.rZ = 2.00; Iniţializare
pP0 = 0.0; //pP0.rX = 0.00; pP0.rY = 0.00; pP0.rZ = 0.00; Iniţializare
pP0(1.0, 3.9,-1.2); //pP0.rX = 2.00; pP0.rY = 3.90; pP0.rZ =-1.20; Iniţializare
pP0 = {2.0, 1.9,-1.2}; //pP0.rX = 2.00; pP0.rY = 1.90; pP0.rZ =-1.20; Iniţializare
pP1 = 2.0 * pP0; //pP1.rX = 4.00; pP1.rY = 3.80; pP1.rZ =-2.40; Înmulţire scalar
pP1*= pP0; //pP1.rX = 8.00; pP1.rY = 7.22; pP1.rZ = 2.88; Înmulţire point
pP0/= 2.0; //pP0.rX = 1.00; pP0.rY = 0.95; pP0.rZ =-0.60; Împărţire
pP1 = max(pP0, 5.0); //pP1.rX = 8.00; pP1.rY = 7.22; pP1.rZ = 5.00; Similar pP1 MAX 5
pP0 min 0.0; //pP0.rX = 0.00; pP0.rY = 0.00; pP0.rZ =-0.60; Op. MIN cu scalar.
pP0=morph(pP0,pP1,0.5); //pP0.rX = 4.00; pP0.rY = 3.61; pP0.rZ = 2.20; funcţia morph.
Se poate observa că setul de operaţii descris este destul de consistent şi permite o operare decentă cu clasele elementare descrise până în prezent: întreg, boolean, real şi punct.
NimicMin (Punct pA, pB); //întoarce minimul dintre valorile pA şi pB
NimicMax (Punct pA, pB); //întoarce maximul dintre valorile pA şi pB
NimicMorf(Punct pA, pB, pP = 0.5); //întoarce pA * pP + pB * (1.0 - pP)
NimicAbs (Punct pA); //întoarce valoarea absolută
NimicRotX(Punct pRot, Real rUnghiDeg); //rotaţia în jurul lui X
NimicRotY(Punct pRot, Real rUnghiDeg); //rotaţia în jurul lui Y
NimicRotZ(Punct pRot, Real rUnghiDeg); //rotaţia în jurul lui Z
NimicScalare(Punct pScalare, Real rFactorScalare); //scalarea faţă de un punct
NimicTranslaţie(Punct pTranslaţie); //scalarea faţă de un punct
Punct Min (Punct pA, pB); //întoarce minimul dintre valorile pA şi pB
Punct Max (Punct pA, pB); //întoarce maximul dintre valorile pA şi pB
Punct Morf(Punct pA, pB, pP = 0.5); //întoarce pA * pP + pB * (1.0 - pP)
Punct Abs (Punct pA); //întoarce valoarea absolută
Punct RotX(Punct p, pRot, Real rUnghiDeg); //rotaţia în jurul lui X
Punct RotY(Punct p, pRot, Real rUnghiDeg); //rotaţia în jurul lui Y
Punct RotZ(Punct p, pRot, Real rUnghiDeg); //rotaţia în jurul lui Z
Punct Scalare(Punct p, pScalare, Real rFactorScalare); //scalarea faţă de un punct
Punct Translaţie(Punct p, pTranslaţie); //scalarea faţă de un punct
pMin, pMax – punctul minim şi maxim;
p0.rX - valoarea cotei x din punctul 0;
Dostları ilə paylaş: |