2209 105 030 - HERU SUSANTO
Membuat Guci 3D dengan openCV
Sebuah guci diperoleh dari pembentukan kembali sebuah tabung tutup atas terbukan. Pada bagian body dilakukan penandaan titik lekukan yang akan dijadikan sebagai dasar body guci. Sebuah guci yang baik adalah memiliki lekukan face yang halus dan natural.
Contoh penggalan listing program :
void makeCylinderN(object3D_t &silinder,int m,int n,float r[],float h[],int sw){
float a=6.26/n;
float b=0;
int i,j;
silinder.NumberofVertices=(m+1)*n;
for(i=0;i<=m;i++){
if(i>0) b=b+h[i-1];
for(j=0;j<n;j++){
silinder.pnt[i*n+j].x=r[i]*cos(j*a);
silinder.pnt[i*n+j].y=b;
silinder.pnt[i*n+j].z=r[i]*sin(j*a);
}
}
silinder.NumberofFaces=m*n+2;
for(i=0;i<m;i++){
for(j=0;j<n;j++){
silinder.fc[i*n+j].NumberofVertices=4;
silinder.fc[i*n+j].pnt[0]=i*n+j;
silinder.fc[i*n+j].pnt[1]=(i+1)*n+j;
silinder.fc[i*n+j].pnt[2]=(i+1)*n+j+1;
silinder.fc[i*n+j].pnt[3]=i*n+j+1;
if(j==(n-1)){
silinder.fc[i*n+j].pnt[2]=i*n+j+1;
silinder.fc[i*n+j].pnt[3]=(i-1)*n+j+1;
}
}
}
if(sw==0 || sw==1){
silinder.fc[m*n].NumberofVertices=n;
for(i=0;i<n;i++) silinder.fc[m*n].pnt[i]=i;
}
if(sw==0 || sw==2){
silinder.fc[m*n+1].NumberofVertices=n;
for(i=0;i<n;i++) silinder.fc[m*n+1].pnt[i]=(m+1)*n-1-i;
}
color_t c={1,1,0};
for(i=0;i<silinder.NumberofFaces;i++) silinder.fc[i].col=c;
for(i=0;i<silinder.NumberofVertices;i++)
silinder.col[i]=c;
}
Tidak ada komentar:
Posting Komentar