aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/glfww.h4
-rw-r--r--src/point.c61
2 files changed, 52 insertions, 13 deletions
diff --git a/src/glfww.h b/src/glfww.h
index fb0eb81..f5e127a 100644
--- a/src/glfww.h
+++ b/src/glfww.h
@@ -9,8 +9,8 @@
#define __glfww_
#define win_clean() glfwTerminate();
-#define ab_to_vp(x,y,w,h,x1,y1) float x = 2 * ((float)x1/w) -1;\
- float y = 2 * ((float)y1/h) -1;
+#define ab_to_vp(x,y,w,h,x1,y1) float x = 2 * ((float)x1/(w)) -1;\
+ float y = 2 * ((float)y1/(h)) -1;
GLFWwindow* glfw_init();
#define glfw_load(w) glfwSwapBuffers(w);
void glfw_loop(GLFWwindow*window);
diff --git a/src/point.c b/src/point.c
index e6f9cac..4b07f72 100644
--- a/src/point.c
+++ b/src/point.c
@@ -67,15 +67,16 @@ void perspective_proj(GLFWwindow* b,cord* c, int len,double ctx,double cty,doubl
double six = sin(ctx);
double siy = sin(cty);
double cox = cos(ctx);
- double fov = .1;
+ double fov = .01;
double ex = cx;
double ey = cy;
//glfwGetFramebufferSize(b,&w,&h);
refresh_size(b);
glColor3f(1.0f,0.0f,0.0f);
- double ez = 1/tan(fov/2);
+ //double ez = 1/tan(fov/2);
//glBegin(GL_POINTS);
GLuint fb = 0;
+ double ez=500; //i dont get this at all
//glGenFramebuffers(1,&fb);
for(int i = 0; i!=len; i++){
@@ -99,7 +100,7 @@ void perspective_proj(GLFWwindow* b,cord* c, int len,double ctx,double cty,doubl
//return;
//printf("%i:%f %f | %f %f\n",i*2,xa,ya,bx,by);
//return;
- pixels[i*2] = xa;
+ pixels[i*2] = xa+1;
pixels[i*2+1] = ya;
} else {
pixels[i*2] = -20;
@@ -115,6 +116,12 @@ void perspective_proj(GLFWwindow* b,cord* c, int len,double ctx,double cty,doubl
glDrawArrays(GL_POINTS,0,len);
glDisableClientState(GL_VERTEX_ARRAY);
free(pixels);
+ /*for(int i = 0; i!=get_w();i++){
+ glfw_pixel(b,i,get_h()/2);
+ }
+ for(int i = 0; i!=get_h();i++){
+ glfw_pixel(b,get_w()/2,i);
+ }*/
//glEnd();
}
cord* basier3d(double*xx,double*yy,double*zz,int n){
@@ -187,23 +194,43 @@ int main(){
double xx5[5] = {5.0,100.0,200.0};
double yy5[5] = {200.0,200.0,200.0};
- double zz5[5] = {150.0,150.0,150.0};
+ double zz5[5] = {290.0,290.0,290.0};
cord* e = basier3d(xx5,yy5,zz5,3);
double xx6[5] = {5.0,100.0,200.0};
double yy6[5] = {5.0,5.0,5.0};
- double zz6[5] = {150.0,150.0,150.0};
+ double zz6[5] = {290.0,290.0,290.0};
cord* f = basier3d(xx6,yy6,zz6,3);
double xx7[5] = {200.0,200.0,200.0};
double yy7[5] = {5.0,100.0,200.0};
- double zz7[5] = {150.0,150.0,150.0};
+ double zz7[5] = {290.0,290.0,290.0};
cord* g = basier3d(xx7,yy7,zz7,3);
double xx8[5] = {5.0,5.0,5.0};
double yy8[5] = {5.0,100.0,200.0};
- double zz8[5] = {150.0,150.0,150.0};
+ double zz8[5] = {290.0,290.0,290.0};
cord* h = basier3d(xx8,yy8,zz8,3);
+ //next
+ double xx9[5] = {5.0,5.0,5.0};
+ double yy9[5] = {200.0,200.0,200.0};
+ double zz9[5] = {290.0,290.0,95.0};
+ cord* ii = basier3d(xx9,yy9,zz9,3);
+
+ double xx10[5] = {5.0,5.0,5.0};
+ double yy10[5] = {5.0,5.0,5.0};
+ double zz10[5] = {290.0,290.0,95.0};
+ cord* j = basier3d(xx10,yy10,zz10,3);
+
+ double xx11[5] = {200.0,200.0,200.0};
+ double yy11[5] = {200.0,200.0,200.0};
+ double zz11[5] = {290.0,290.0,95.0};
+ cord* k = basier3d(xx11,yy11,zz11,3);
+
+ double xx12[5] = {200.0,200.0,200.0};
+ double yy12[5] = {5.0,5.0,5.0};
+ double zz12[5] = {290.0,290.0,95.0};
+ cord* l = basier3d(xx12,yy12,zz12,3);
join_cords(a,b,100,100);
free(b);
join_cords(a,c,200,100);
@@ -218,12 +245,21 @@ int main(){
free(g);
join_cords(a,h,700,100);
free(h);
+ join_cords(a,ii,800,100);
+ free(ii);
+ join_cords(a,j,900,100);
+ free(j);
+ join_cords(a,k,1000,100);
+ free(k);
+ join_cords(a,l,1100,100);
+ free(l);
int max_r = 630;
double half_max_r = (double)max_r/2/2;
GLFWwindow* w = glfw_init();
//glfwSetKeyCallback(w,key_press);
double pl_x = 0;
double pl_y = 0;
+ double pl_z = 0;
double plr_x = 0;
double plr_y = 0;
for(double rr = 0.01;rr!=0;rr+=0.01){
@@ -231,18 +267,18 @@ int main(){
double p2 = plr_y*0.01;
double p3 = 0;
double p4 = pl_y;
- double p5 = -pl_y;
+ double p5 = -pl_y+pl_z;
double p6 = pl_x;
- perspective_proj(w,a,800,p1,p2,p3,p4,p5,p6);
+ perspective_proj(w,a,1200,p1,p2,p3,p4,p5,p6);
glfw_load(w);
usleep(10000);
glfwPollEvents();
if(glfwGetKey(w,GLFW_KEY_I))
- plr_x++;
- if(glfwGetKey(w,GLFW_KEY_K))
plr_x--;
+ if(glfwGetKey(w,GLFW_KEY_K))
+ plr_x++;
if(glfwGetKey(w,GLFW_KEY_J))
plr_y--;
if(glfwGetKey(w,GLFW_KEY_L))
@@ -252,10 +288,13 @@ int main(){
if(glfwGetKey(w,GLFW_KEY_W)){
pl_x+=cosf(plr_y*0.01);
pl_y+=sinf(plr_y*0.01);
+ pl_z-=sinf(plr_x*0.01);
+ printf("%f\n",pl_z);
}
if(glfwGetKey(w,GLFW_KEY_S)){
pl_x-=cosf(plr_y*0.01);
pl_y-=sinf(plr_y*0.01);
+ pl_z+=sinf(plr_x*0.01);
}
if(glfwGetKey(w,GLFW_KEY_A)){
pl_x-=cosf((half_max_r+plr_y)*0.01);