aboutsummaryrefslogtreecommitdiff
path: root/src/point.c
diff options
context:
space:
mode:
authoramy <[email protected]>2023-04-20 01:28:13 +0000
committeramy <[email protected]>2023-04-20 01:28:13 +0000
commit4302110b4ae712fcb7813a4494a37ff319e155d5 (patch)
treef4d24b92ad31988fac6183927ac95c5422096f84 /src/point.c
parent55e74049a09cb6c40d5760fbec985043a58ef244 (diff)
stupid issues, should be fine idk
Diffstat (limited to 'src/point.c')
-rw-r--r--src/point.c46
1 files changed, 26 insertions, 20 deletions
diff --git a/src/point.c b/src/point.c
index 16d9c26..ee684cb 100644
--- a/src/point.c
+++ b/src/point.c
@@ -9,9 +9,9 @@ typedef struct {
double z;
} cord;
typedef struct {
- int r;
- int g;
- int b;
+ float r;
+ float g;
+ float b;
} color;
typedef struct {
cord at;
@@ -144,9 +144,9 @@ void perspective_proj(GLFWwindow* b,point_arr* c,double ctx,double cty,double ct
//return;
pixels[i*2] = xa+1;
pixels[i*2+1] = ya;
- colors[i*3] = 0.0f;
- colors[i*3+1] = 1.0f;
- colors[i*3+2] = 1.0f;
+ colors[i*3] = c->c[i].color.r;
+ colors[i*3+1] = c->c[i].color.g;
+ colors[i*3+2] = c->c[i].color.b;
} else {
pixels[i*2] = -20;
pixels[i*2+1]= -20;
@@ -230,7 +230,7 @@ void perspective_proj(GLFWwindow* b,point_arr* c,double ctx,double cty,double ct
}*/
//glEnd();
}
-point_arr* basier3d(double*xx,double*yy,double*zz,int n){
+point_arr* basier3d(double*xx,double*yy,double*zz,int n,float rr, float gg, float bb){
point_arr* pa;
pa = malloc(sizeof(*pa));
pa->c = malloc(sizeof(*pa->c)*(get_w()*60));
@@ -262,6 +262,9 @@ point_arr* basier3d(double*xx,double*yy,double*zz,int n){
pa->c[iy].at.x = bcx;
pa->c[iy].at.y = bcy;
pa->c[iy].at.z = bcz;
+ pa->c[iy].color.r = rr;
+ pa->c[iy].color.g = gg;
+ pa->c[iy].color.b = bb;
//printf("(%f,%f,%f)\n",bcx,bcy,bcz);
}
//bw b = sdl_init();
@@ -284,29 +287,30 @@ void join_cords(point_arr* a, point_arr* b){
err("failed to reallocate cords",pexit);
for(int i = 0; i<=a->len+b->len; i++){
a->c[a_len+i].at = b->c[i].at;
+ a->c[a_len+i].color = b->c[i].color;
}
//return a.len+b.len;
}
-point_arr* square_gen(double* tl, double* tr, double* bl, double*br){
+point_arr* square_gen(double* tl, double* tr, double* bl, double*br,float rr, float gg, float bb){
double xx[3] = {tl[0],tr[0]};
double yy[3] = {tl[1],tr[1]};
double zz[3] = {tl[2],tr[2]};
- point_arr* a = basier3d(xx,yy,zz,2);
+ point_arr* a = basier3d(xx,yy,zz,2,rr,gg,bb);
double xx1[3] = {tl[0],bl[0]};
double yy1[3] = {tl[1],bl[1]};
double zz1[3] = {tl[2],bl[2]};
- point_arr* b = basier3d(xx1,yy1,zz1,2);
+ point_arr* b = basier3d(xx1,yy1,zz1,2,rr,gg,bb);
double xx2[3] = {tr[0],br[0]};
double yy2[3] = {tr[1],br[1]};
double zz2[3] = {tr[2],br[2]};
- point_arr* c = basier3d(xx2,yy2,zz2,2);
+ point_arr* c = basier3d(xx2,yy2,zz2,2,rr,gg,bb);
double xx3[3] = {bl[0],br[0]};
double yy3[3] = {bl[1],br[1]};
double zz3[3] = {bl[2],br[2]};
- point_arr* d = basier3d(xx3,yy3,zz3,2);
+ point_arr* d = basier3d(xx3,yy3,zz3,2,rr,gg,bb);
join_cords(a,b);
join_cords(a,c);
@@ -320,27 +324,29 @@ point_arr* square_gen(double* tl, double* tr, double* bl, double*br){
return a;
}
point_arr* cube_gen(double* tl, double* tr, double* bl, double*br,
- double* tl2, double* tr2, double* bl2, double*br2){
+ double* tl2, double* tr2, double* bl2, double*br2,
+ float rr, float gg, float bb){
- point_arr* a = square_gen(tl,tr,bl,br);
- point_arr* b = square_gen(tl2,tr2,bl2,br2);
+ point_arr* a = square_gen(tl,tr,bl,br,rr,gg,bb);
+
+ point_arr* b = square_gen(tl2,tr2,bl2,br2,rr,gg,bb);
double s;
join_cords(a,b);
free(b->c);
free(b);
- point_arr* c = square_gen(tl2,tr2,tl,tr);
+ point_arr* c = square_gen(tl2,tr2,tl,tr,rr,gg,bb);
join_cords(a,c);
free(c->c);
free(c);
- point_arr* d = square_gen(bl2,br2,bl,br);
+ point_arr* d = square_gen(bl2,br2,bl,br,rr,gg,bb);
join_cords(a,d);
free(d->c);
free(d);
- point_arr* e = square_gen(tl,tl2,bl,bl2);
+ point_arr* e = square_gen(tl,tl2,bl,bl2,rr,gg,bb);
join_cords(a,e);
free(e->c);
free(e);
- point_arr* f = square_gen(br2,br,tr2,tr);
+ point_arr* f = square_gen(br2,br,tr2,tr,rr,gg,bb);
join_cords(a,f);
free(f->c);
free(f);
@@ -374,7 +380,7 @@ int main(int argc,char*argv[]){
double tr1[3] = {200.0,200.0,200.0};
double bl1[3] = {5.0,5.0,5.0};
double br1[3] = {200.0,5.0,5.0};
- point_arr* a = cube_gen(tl1,tr1,bl1,br1,tl2,tr2,bl2,br2);
+ point_arr* a = cube_gen(tl1,tr1,bl1,br1,tl2,tr2,bl2,br2,0.1f,0.1f,0.1f);
//exit(0);
int max_r = 630;
double half_max_r = (double)max_r/2/2;