Sunteți pe pagina 1din 13

Ministerul Educației și Cercetării al Republicii Moldova

Universitatea Tehnică a Moldovei


Facultatea Calculatoare, Informatică şi Microelectronică
Departamentul Informatică şi Ingineria Sistemelor

RAPORT
Lucrare de laborator nr.6

la cursul „ Modelarea proceselor 3D dinamice”

Tema:„ Modelarea proceselor 3D dinamice”

A efectuat : st. gr. RM-211 Dascal Sergiu


A verificat: asis. univ. Toma Olga

Chișinău 2021
Cuprins
Introducere............................................................................................................................................
1 Sarcina................................................................................................................................................
Rezultatul Programului.........................................................................................................................
Concluzie...............................................................................................................................................
Bibliografie...........................................................................................................................................
Anexa....................................................................................................................................................
Modelarea proceselor 3D dinamice, pe lângă scopuri pur științifice, poate avea și valoare
aplicativă.
Biblioteca grafică p5.js poate fi utilizată pentru modelare fizică a proceselor dinamice. Ea
ne permite modelarea sistemelor mecanice (în cadrul legilor mecanicii teoretice). Cu ajutorul
p5.js putem simula mișcări de translație și rotație în trei planuri.
Exemplul prezentat în continuare simulează ciocnirea a două sfere cu masele m1 și m2
care până la ciocnire au vitezele deplasări liniare a centrelor, notate cu v1 și v2. După ciocnire
sferele se vor deplasa cu vitezele v’1 și v’2. Sferele se rostogolesc pe o suprafață rigidă, adică
execută o mișcare de rotație care sunt specificate de unghiurile ”omega1” și ”omega2”.

Fig. 6.1. Ciocnirea a două sfere

Utilizând legea conservării energiei mecanice


2 2 '2 '2
m1 v 1 m2 v 2 m1 v 1 m2 v 2
+ = + ,
2 2 2 2
și legea conservării impulsului
m1 v 1+ m2 v 2=m1 v ' 1 +m2 v ' 2,
determinăm relațiile dintre viteze până și după ciocnirea sferelor:
m1 v 1 +m 2 v 2
v ' 1=−v 1 +2 ,
m1 +m 2
m1 v 1 +m2 v 2
v ' 2=−v 2 +2 .
m1 +m2
Unghiul de rotație
r1 r2
omega 1= ; omega 2= .
v1 v2

Lucrarea de laborator nr. 6


Tema: Modelarea proceselor 3D dinamice

Scopul lucrării: Obținerea cunoștințelor practice în modelarea proceselor 3D dinamice,


utilizând funcțiile standard de translație, și rotație din biblioteca p5.js.
Sarcina lucrării:
1. Elaborați un program pentru modelarea unui proces fizic utilizând funcțiile standard de
translație, și rotație din biblioteca p5.js.
2. Elaborați un program care creează o scenă 3D de modelare a proceselor fizice conform
variantei indicate în tabelul 6.1. Pentru crearea scenei pot fi utilizate obiecte grafice 3D existente
în repozitoriul 3D.
Simularea și descrierea procesului fizic bidimensional din sarcină poate fi consultat pe
pagina https://www.myphysicslab.com/.
Tabelul 6.1. Variantele pentru realizarea lucrării de laborator

9 Pendulul lui Newton


Rezultatul Programului :
Concluzii

În cadrul laboratorului respectiv s-a lucrat cu programul P5.js si s-au obtinut


abilitati de creare a desenelor grafice in programul respectiv. În cadrul
laboratorului sau folosit functiile :
function setup(), createCanvas(500, 500); background("gray"); noStroke();
fill("brown"); triangle(70, 330, 430, 330, 250, 480); circle(200, 350, 180); arc(250,
270, 80, 20, PI, TWO_PI); rect(248, 313, 4, 40); quad(248, 350, 210, 360, 210,
364, 251, 354);
În cadrul laboratorului respectiv s-a lucrat cu extragerea informației
din două resurse paralel, una în română și alta în limba engleză. Cu ajutorul
diferitor scripturi și în special al bibliotecii spaCy, s-au clasificat diferite entități,
precum Persoane, Organizații, Locații, Date. S-au efectuat calcule pe baza la
calitatea extragerii automate a acestor elemente și anume s-a calculat Precision și
Recall. În cele din urmă, concluzionez că Precision are valoarea 0.5/0.5 (valorile
calculelor ambelor resurse), iar Recall-ul – 1/0.33. Sa observat careva erori la
entitatea Person, selectând și elemente abstracte, precum ”proprietarul”, dar acest
element a fost clasificat incorect, deoarece nu semnifică o persoană exactă. De
asemenea, au fost elemente neclasificate, dar care ar fi trebuit. 
Spre rezolvarea acestor probleme aș propune ca pentru selectarea
persoanelor spre exemplu, să se ia în considerație litera majusculă de la începutul
cuvântului. La fel, pentru determinarea datelor să se ia în considerare prezența
cifrelor. Cuvintele cheie tot au un rol deosebit în clasificarea entităților, de aceea
ele nu trebuie evitate. 
Concluzionez că lucrul în cadrul laboratorului a fost unul eficient și
interesant. 
Bibliografie
1. https://en.wikipedia.org/wiki/Information_extraction
2. https://ec.europa.eu/jrc/en/language-technologies/jrc-names
3. https://help.monkeylearn.com/en/articles/2173839-improving-recall-and-precision
Anexa
Codul programului in P5.Js nr. 1
let r = 80;
let a, a2;
let angle, angle2;
let g = 0.2;
let v = 0;
let v2 = 0;
let x=0, y=0, x2=0, y2=0;
let first = true;
let fr = 30;
function setup()
{
createCanvas(760, 400, WEBGL);
normalMaterial();
frameRate(fr);
angle = PI / 4;
angle2 = PI / 4;
}
function left() {
x3 = r * sin(angle2);
y2 = r * cos(angle2);

if (x3 <= 0) {
x2 = x3;
} else {
y2 = r;
}
}

function right() {
x1 = r * sin(angle);
y = r * cos(angle);

if (x1 >= 0) {
x = x1;
} else {
y = r;
first = false;
}
}

function draw() {
orbitControl();
background('lightblue');

/*left();
right();*/

translate(-50, -30, 0);

cylinder(2.5, 150);
translate(0, 100, 0);
sphere(25);
translate(50, -100, 0);
cylinder(2.5, 150);
translate(0, 100, 0);
sphere(25);
translate(50, -100, 0);
cylinder(2.5, 150);
translate(0, 100, 0);
sphere(25);
//Left
left();
//rotate(-angle)
//translate(2*angle, -2*angle, 0);
translate(-150, -100, 0);
translate(2*x2, 2*y2, 0);
translate(0, -160, 0);
translate(0, 100, 0);
push();
sphere(25, 25);
if (x3 <= 0)
{
rotate(-angle2);
}
translate(0, -100, 0);
cylinder(2.5, 150);
pop();

//Right
right();
translate(0, -100, 0);
translate(200, 60, 0);
translate(-2*x2, -2*y2, 0);
translate(0, -60, 0);
translate(2*x, 2*y, 0);
translate(0, 100, 0);
sphere(25);
if (x1 >= 0)
{
rotate(-angle);
}
translate(0, -100, 0);
cylinder(2.5, 150);

a = -g / r * sin(angle);
v += a;
angle += v;

a2 = -g / r *sin(angle2);
v2 += a2;
angle2 += v2;
}

S-ar putea să vă placă și