asdf

Dependencies:   mbed

Fork of manworm_ticker_tv by Bayley Wang

Committer:
dicarloj
Date:
Fri May 04 01:45:05 2018 +0000
Revision:
12:e99cc1e9d928
Parent:
11:537cde55b27f
lol it works;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dicarloj 9:2a47b9ff8911 1 #define N_PTS 500
dicarloj 9:2a47b9ff8911 2 #define N_LNS 2000
dicarloj 12:e99cc1e9d928 3 #define N_HEIGHTS 36
dicarloj 12:e99cc1e9d928 4 #define N_SIDE 6
dicarloj 9:2a47b9ff8911 5
dicarloj 9:2a47b9ff8911 6 #include "gfx.h"
dicarloj 9:2a47b9ff8911 7 #include "mbed.h"
dicarloj 9:2a47b9ff8911 8 #include "main.h"
dicarloj 9:2a47b9ff8911 9
dicarloj 9:2a47b9ff8911 10 int n_pts = 0;
dicarloj 9:2a47b9ff8911 11 int n_lns = 0;
dicarloj 9:2a47b9ff8911 12 int n_frame = 0;
dicarloj 9:2a47b9ff8911 13 int n_cubes = 0;
dicarloj 9:2a47b9ff8911 14
dicarloj 9:2a47b9ff8911 15 char gfx_stat[40];
dicarloj 9:2a47b9ff8911 16
dicarloj 9:2a47b9ff8911 17 point_t* pts;
dicarloj 9:2a47b9ff8911 18 line_t* lns;
dicarloj 9:2a47b9ff8911 19 cube_t* cubes;
dicarloj 11:537cde55b27f 20 point_t temp_point;
dicarloj 9:2a47b9ff8911 21
dicarloj 9:2a47b9ff8911 22 float heights[N_HEIGHTS];
dicarloj 9:2a47b9ff8911 23
dicarloj 9:2a47b9ff8911 24 float c_i[3] = {-.1, -.1, -.1};
dicarloj 9:2a47b9ff8911 25 float c1i[3] = {.1, -.1, -.1};
dicarloj 9:2a47b9ff8911 26 float c2i[3] = {-.1, .1, -.1};
dicarloj 9:2a47b9ff8911 27 float c3i[3] = {-.1, -.1, .1};
dicarloj 9:2a47b9ff8911 28 float c_j[3] = {.1, .1, .1};
dicarloj 9:2a47b9ff8911 29 float c1j[3] = {.1, .1, -.1};
dicarloj 9:2a47b9ff8911 30 float c2j[3] = {-.1, .1, .1};
dicarloj 9:2a47b9ff8911 31 float c3j[3] = {.1, -.1, .1};
dicarloj 9:2a47b9ff8911 32 float x_rotmat[3][3] = {{1, 0, 0}, {0, cos(.02), -sin(.02)}, {0, sin(.02), cos(.02)}};
dicarloj 10:1163fb31b0a7 33 float y_rotmat[3][3] = {{cos(.03), 0, sin(.03)}, {0, 1, 0}, { -sin(.03), 0, cos(.03)}};
dicarloj 9:2a47b9ff8911 34 float z_rotmat[3][3] = {{cos(.02), -sin(.02), 0}, {sin(.02), cos(.02), 0}, {0, 0, 1}};
dicarloj 9:2a47b9ff8911 35 float temp[3] = {0, 0, 0};
dicarloj 9:2a47b9ff8911 36 float temp2[3] = {0, 0, 0};
dicarloj 9:2a47b9ff8911 37
dicarloj 10:1163fb31b0a7 38 float x_off = 0.f;
dicarloj 10:1163fb31b0a7 39 float y_off = 0.f;
dicarloj 10:1163fb31b0a7 40 float pitch = 0.f;
dicarloj 11:537cde55b27f 41 float yaw = 0.f;
dicarloj 10:1163fb31b0a7 42
dicarloj 9:2a47b9ff8911 43 unsigned int m_z=12434,m_w=33254;
dicarloj 9:2a47b9ff8911 44 void draw_lines();
dicarloj 9:2a47b9ff8911 45
dicarloj 9:2a47b9ff8911 46 unsigned int rnd() {
dicarloj 9:2a47b9ff8911 47 m_z = 36969 * (m_z & 65535) + (m_z >>16);
dicarloj 9:2a47b9ff8911 48 m_w = 18000 * (m_w & 65535) + (m_w >>16);
dicarloj 9:2a47b9ff8911 49 return ((m_z <<16) + m_w);
dicarloj 9:2a47b9ff8911 50 }
dicarloj 9:2a47b9ff8911 51
dicarloj 9:2a47b9ff8911 52
dicarloj 9:2a47b9ff8911 53
dicarloj 9:2a47b9ff8911 54 void mat_vec_mult(float a[][3], float *b, float *c, uint8_t inv) {
dicarloj 9:2a47b9ff8911 55 for (int i = 0; i < 3; i++) {
dicarloj 9:2a47b9ff8911 56 if(inv)
dicarloj 9:2a47b9ff8911 57 c[i] = (a[0][i] * b[0] + a[1][i] * b[1] + a[2][i] * b[2]);
dicarloj 9:2a47b9ff8911 58 else
dicarloj 9:2a47b9ff8911 59 c[i] = (a[i][0] * b[0] + a[i][1] * b[1] + a[i][2] * b[2]);
dicarloj 9:2a47b9ff8911 60 }
dicarloj 9:2a47b9ff8911 61 }
dicarloj 9:2a47b9ff8911 62
dicarloj 9:2a47b9ff8911 63 void point_mult(float a[][3], point_t* b, float* c, uint8_t inv)
dicarloj 9:2a47b9ff8911 64 {
dicarloj 9:2a47b9ff8911 65 for (int i = 0; i < 3; i++) {
dicarloj 9:2a47b9ff8911 66 if(inv)
dicarloj 9:2a47b9ff8911 67 {
dicarloj 9:2a47b9ff8911 68 c[i] = (a[0][i] * b->x + a[1][i] * b->y + a[2][i] * b->z);
dicarloj 9:2a47b9ff8911 69 }
dicarloj 9:2a47b9ff8911 70 else
dicarloj 9:2a47b9ff8911 71 {
dicarloj 9:2a47b9ff8911 72 c[i] = (a[i][0] * b->x + a[i][1] * b->y + a[i][2] * b->z);
dicarloj 9:2a47b9ff8911 73 }
dicarloj 9:2a47b9ff8911 74 }
dicarloj 9:2a47b9ff8911 75 }
dicarloj 9:2a47b9ff8911 76
dicarloj 9:2a47b9ff8911 77
dicarloj 9:2a47b9ff8911 78
dicarloj 9:2a47b9ff8911 79 void add_cube()
dicarloj 9:2a47b9ff8911 80 {
dicarloj 9:2a47b9ff8911 81
dicarloj 9:2a47b9ff8911 82 }
dicarloj 9:2a47b9ff8911 83
dicarloj 9:2a47b9ff8911 84 char* get_gfx_stat()
dicarloj 9:2a47b9ff8911 85 {
dicarloj 9:2a47b9ff8911 86 n_frame++;
dicarloj 11:537cde55b27f 87 //sprintf(gfx_stat,"%d/%d, %d/%d, %d",n_lns,N_LNS,n_pts,N_PTS,n_frame%1000);
dicarloj 11:537cde55b27f 88 sprintf(gfx_stat,"%.3f/%.3f",pitch,yaw);
dicarloj 9:2a47b9ff8911 89 return gfx_stat;
dicarloj 9:2a47b9ff8911 90 }
dicarloj 9:2a47b9ff8911 91
dicarloj 9:2a47b9ff8911 92 point_t* new_point()
dicarloj 9:2a47b9ff8911 93 {
dicarloj 9:2a47b9ff8911 94 if(n_pts >= N_PTS - 1) return NULL;
dicarloj 9:2a47b9ff8911 95 return &pts[n_pts++];
dicarloj 9:2a47b9ff8911 96 }
dicarloj 9:2a47b9ff8911 97
dicarloj 9:2a47b9ff8911 98 line_t* new_linet()
dicarloj 9:2a47b9ff8911 99 {
dicarloj 9:2a47b9ff8911 100 if(n_lns >= N_LNS - 1) return NULL;
dicarloj 9:2a47b9ff8911 101 return &lns[n_lns++];
dicarloj 9:2a47b9ff8911 102 }
dicarloj 9:2a47b9ff8911 103
dicarloj 9:2a47b9ff8911 104 void rotate_cube(uint8_t x, uint8_t y, uint8_t z,uint8_t inv);
dicarloj 9:2a47b9ff8911 105
dicarloj 11:537cde55b27f 106 unsigned int PRNG()
dicarloj 9:2a47b9ff8911 107 {
dicarloj 11:537cde55b27f 108 // our initial starting seed is 5323
dicarloj 11:537cde55b27f 109 static unsigned int nSeed = 5323;
dicarloj 11:537cde55b27f 110
dicarloj 11:537cde55b27f 111 // Take the current seed and generate a new value from it
dicarloj 11:537cde55b27f 112 // Due to our use of large constants and overflow, it would be
dicarloj 11:537cde55b27f 113 // very hard for someone to predict what the next number is
dicarloj 11:537cde55b27f 114 // going to be from the previous one.
dicarloj 11:537cde55b27f 115 nSeed = (8253729 * nSeed + 2396403);
dicarloj 11:537cde55b27f 116
dicarloj 11:537cde55b27f 117 // Take the seed and return a value between 0 and 32767
dicarloj 11:537cde55b27f 118 return nSeed % 32767;
dicarloj 11:537cde55b27f 119 }
dicarloj 11:537cde55b27f 120
dicarloj 11:537cde55b27f 121 void update_x_rot();
dicarloj 11:537cde55b27f 122 void new_frame(float pitch_rate, float yaw_rate)
dicarloj 11:537cde55b27f 123 {
dicarloj 11:537cde55b27f 124 pitch += pitch_rate * .05f;
dicarloj 11:537cde55b27f 125 yaw += yaw_rate * .05f;
dicarloj 11:537cde55b27f 126 //printf("yaw: %.3f \r\n",yaw);
dicarloj 11:537cde55b27f 127 // if(c == 'w') y_off += .01f;
dicarloj 11:537cde55b27f 128 // if(c == 's') y_off -= .01f;
dicarloj 11:537cde55b27f 129 // if(c == 'a') x_off += .01f;
dicarloj 11:537cde55b27f 130 // if(c == 'd') x_off -= .01f;
dicarloj 11:537cde55b27f 131 // if(c == 'q') pitch += .01f;
dicarloj 11:537cde55b27f 132 // if(c == 'e') pitch -= .01f;
dicarloj 10:1163fb31b0a7 133
dicarloj 10:1163fb31b0a7 134 update_x_rot();
dicarloj 9:2a47b9ff8911 135 draw_lines();
dicarloj 10:1163fb31b0a7 136
dicarloj 9:2a47b9ff8911 137 }
dicarloj 9:2a47b9ff8911 138
dicarloj 9:2a47b9ff8911 139 void rotate_cube(uint8_t x, uint8_t y, uint8_t z, uint8_t inv)
dicarloj 9:2a47b9ff8911 140 {
dicarloj 9:2a47b9ff8911 141 if (x) {
dicarloj 9:2a47b9ff8911 142 //multiply the cube point by the rotation matrix and store the array in temp
dicarloj 9:2a47b9ff8911 143 mat_vec_mult(x_rotmat, c_i, temp,inv);
dicarloj 9:2a47b9ff8911 144 //copy temp vector into point vector, updating it.
dicarloj 9:2a47b9ff8911 145 memcpy(c_i, temp, sizeof(c_i));
dicarloj 9:2a47b9ff8911 146 mat_vec_mult(x_rotmat, c1i, temp,inv);
dicarloj 9:2a47b9ff8911 147 memcpy(c1i, temp, sizeof(c1i));
dicarloj 9:2a47b9ff8911 148 mat_vec_mult(x_rotmat, c2i, temp,inv);
dicarloj 9:2a47b9ff8911 149 memcpy(c2i, temp, sizeof(c2i));
dicarloj 9:2a47b9ff8911 150 mat_vec_mult(x_rotmat, c3i, temp,inv);
dicarloj 9:2a47b9ff8911 151 memcpy(c3i, temp, sizeof(c3i));
dicarloj 9:2a47b9ff8911 152 mat_vec_mult(x_rotmat, c_j, temp,inv);
dicarloj 9:2a47b9ff8911 153 memcpy(c_j, temp, sizeof(c_j));
dicarloj 9:2a47b9ff8911 154 mat_vec_mult(x_rotmat, c1j, temp,inv);
dicarloj 9:2a47b9ff8911 155 memcpy(c1j, temp, sizeof(c1j));
dicarloj 9:2a47b9ff8911 156 mat_vec_mult(x_rotmat, c2j, temp,inv);
dicarloj 9:2a47b9ff8911 157 memcpy(c2j, temp, sizeof(c2j));
dicarloj 9:2a47b9ff8911 158 mat_vec_mult(x_rotmat, c3j, temp,inv);
dicarloj 9:2a47b9ff8911 159 memcpy(c3j, temp, sizeof(c3j));
dicarloj 9:2a47b9ff8911 160 }
dicarloj 9:2a47b9ff8911 161 if (y) {
dicarloj 9:2a47b9ff8911 162
dicarloj 9:2a47b9ff8911 163 mat_vec_mult(y_rotmat, c_i, temp,inv);
dicarloj 9:2a47b9ff8911 164 memcpy(c_i, temp, sizeof(c_i));
dicarloj 9:2a47b9ff8911 165 mat_vec_mult(y_rotmat, c1i, temp,inv);
dicarloj 9:2a47b9ff8911 166 memcpy(c1i, temp, sizeof(c1i));
dicarloj 9:2a47b9ff8911 167 mat_vec_mult(y_rotmat, c2i, temp,inv);
dicarloj 9:2a47b9ff8911 168 memcpy(c2i, temp, sizeof(c2i));
dicarloj 9:2a47b9ff8911 169 mat_vec_mult(y_rotmat, c3i, temp,inv);
dicarloj 9:2a47b9ff8911 170 memcpy(c3i, temp, sizeof(c3i));
dicarloj 9:2a47b9ff8911 171 mat_vec_mult(y_rotmat, c_j, temp,inv);
dicarloj 9:2a47b9ff8911 172 memcpy(c_j, temp, sizeof(c_j));
dicarloj 9:2a47b9ff8911 173 mat_vec_mult(y_rotmat, c1j, temp,inv);
dicarloj 9:2a47b9ff8911 174 memcpy(c1j, temp, sizeof(c1j));
dicarloj 9:2a47b9ff8911 175 mat_vec_mult(y_rotmat, c2j, temp,inv);
dicarloj 9:2a47b9ff8911 176 memcpy(c2j, temp, sizeof(c2j));
dicarloj 9:2a47b9ff8911 177 mat_vec_mult(y_rotmat, c3j, temp,inv);
dicarloj 9:2a47b9ff8911 178 memcpy(c3j, temp, sizeof(c3j));
dicarloj 9:2a47b9ff8911 179 }
dicarloj 9:2a47b9ff8911 180 //
dicarloj 9:2a47b9ff8911 181 if (z) {
dicarloj 9:2a47b9ff8911 182 mat_vec_mult(z_rotmat, c_i, temp,inv);
dicarloj 9:2a47b9ff8911 183 memcpy(c_i, temp, sizeof(c_i));
dicarloj 9:2a47b9ff8911 184 mat_vec_mult(z_rotmat, c1i, temp,inv);
dicarloj 9:2a47b9ff8911 185 memcpy(c1i, temp, sizeof(c1i));
dicarloj 9:2a47b9ff8911 186 mat_vec_mult(z_rotmat, c2i, temp,inv);
dicarloj 9:2a47b9ff8911 187 memcpy(c2i, temp, sizeof(c2i));
dicarloj 9:2a47b9ff8911 188 mat_vec_mult(z_rotmat, c3i, temp,inv);
dicarloj 9:2a47b9ff8911 189 memcpy(c3i, temp, sizeof(c3i));
dicarloj 9:2a47b9ff8911 190 mat_vec_mult(z_rotmat, c_j, temp,inv);
dicarloj 9:2a47b9ff8911 191 memcpy(c_j, temp, sizeof(c_j));
dicarloj 9:2a47b9ff8911 192 mat_vec_mult(z_rotmat, c1j, temp,inv);
dicarloj 9:2a47b9ff8911 193 memcpy(c1j, temp, sizeof(c1j));
dicarloj 9:2a47b9ff8911 194 mat_vec_mult(z_rotmat, c2j, temp,inv);
dicarloj 9:2a47b9ff8911 195 memcpy(c2j, temp, sizeof(c2j));
dicarloj 9:2a47b9ff8911 196 mat_vec_mult(z_rotmat, c3j, temp,inv);
dicarloj 9:2a47b9ff8911 197 memcpy(c3j, temp, sizeof(c3j));
dicarloj 9:2a47b9ff8911 198 }
dicarloj 9:2a47b9ff8911 199 }
dicarloj 9:2a47b9ff8911 200
dicarloj 9:2a47b9ff8911 201 void init_gfx()
dicarloj 9:2a47b9ff8911 202 {
dicarloj 9:2a47b9ff8911 203 new_line();
dicarloj 9:2a47b9ff8911 204 draw_vincent_string("GFX START!");
dicarloj 9:2a47b9ff8911 205 pts = (point_t*)malloc(N_PTS * sizeof(point_t));
dicarloj 9:2a47b9ff8911 206 lns = (line_t*)malloc(N_LNS * sizeof(line_t));
dicarloj 9:2a47b9ff8911 207 cubes = (cube_t*)malloc(10 * sizeof(cube_t));
dicarloj 9:2a47b9ff8911 208
dicarloj 9:2a47b9ff8911 209 for(int i = 0; i < N_HEIGHTS; i++)
dicarloj 9:2a47b9ff8911 210 {
dicarloj 9:2a47b9ff8911 211 uint32_t a = rnd();
dicarloj 9:2a47b9ff8911 212 heights[i] = .2f * (float)a / (float)INT_MAX;
dicarloj 9:2a47b9ff8911 213 new_point();
dicarloj 9:2a47b9ff8911 214 pts[i].z = heights[i];
dicarloj 9:2a47b9ff8911 215 pts[i].y = 0.001f;
dicarloj 9:2a47b9ff8911 216 pts[i].x = 0.001f;
dicarloj 9:2a47b9ff8911 217 //sprintf("%f\n",heights[i]);
dicarloj 9:2a47b9ff8911 218 }
dicarloj 9:2a47b9ff8911 219
dicarloj 9:2a47b9ff8911 220
dicarloj 9:2a47b9ff8911 221 for(int xi = 0; xi < N_SIDE; xi++)
dicarloj 9:2a47b9ff8911 222 {
dicarloj 9:2a47b9ff8911 223 for(int yi = 0; yi < N_SIDE; yi++)
dicarloj 9:2a47b9ff8911 224 {
dicarloj 9:2a47b9ff8911 225 // base
dicarloj 9:2a47b9ff8911 226 int pti = xi + N_SIDE*yi;
dicarloj 11:537cde55b27f 227 pts[pti].x = -.5f + .7f*( (float) (xi) )/( (float) (N_SIDE) ) + .15f;
dicarloj 11:537cde55b27f 228 pts[pti].y = -.5f + .7f*( (float) (yi) )/( (float) (N_SIDE) ) + .15f;
dicarloj 9:2a47b9ff8911 229 // go x+?
dicarloj 9:2a47b9ff8911 230 if( (xi < (N_SIDE - 1)))
dicarloj 9:2a47b9ff8911 231 {
dicarloj 9:2a47b9ff8911 232 int ptn = (xi+1) + N_SIDE*yi;
dicarloj 9:2a47b9ff8911 233 line_t* lin = new_linet();
dicarloj 9:2a47b9ff8911 234 lin->a = pts + pti;
dicarloj 9:2a47b9ff8911 235 lin->b = pts + ptn;
dicarloj 9:2a47b9ff8911 236 }
dicarloj 9:2a47b9ff8911 237 // go x-?
dicarloj 9:2a47b9ff8911 238 if( (xi > 0))
dicarloj 9:2a47b9ff8911 239 {
dicarloj 9:2a47b9ff8911 240 int ptn = (xi-1) + N_SIDE*yi;
dicarloj 9:2a47b9ff8911 241 line_t* lin = new_linet();
dicarloj 9:2a47b9ff8911 242 lin->a = pts + pti;
dicarloj 9:2a47b9ff8911 243 lin->b = pts + ptn;
dicarloj 9:2a47b9ff8911 244 }
dicarloj 9:2a47b9ff8911 245
dicarloj 9:2a47b9ff8911 246 // go y+
dicarloj 9:2a47b9ff8911 247 if( (yi < (N_SIDE - 1)))
dicarloj 9:2a47b9ff8911 248 {
dicarloj 9:2a47b9ff8911 249 int ptn = (xi) + N_SIDE*(1+yi);
dicarloj 9:2a47b9ff8911 250 line_t* lin = new_linet();
dicarloj 9:2a47b9ff8911 251 lin->a = pts + pti;
dicarloj 9:2a47b9ff8911 252 lin->b = pts + ptn;
dicarloj 9:2a47b9ff8911 253 }
dicarloj 9:2a47b9ff8911 254
dicarloj 9:2a47b9ff8911 255 // go y-?
dicarloj 9:2a47b9ff8911 256 if( (yi > 0))
dicarloj 9:2a47b9ff8911 257 {
dicarloj 9:2a47b9ff8911 258 int ptn = (xi) + N_SIDE*(yi - 1);
dicarloj 9:2a47b9ff8911 259 line_t* lin = new_linet();
dicarloj 9:2a47b9ff8911 260 lin->a = pts + pti;
dicarloj 9:2a47b9ff8911 261 lin->b = pts + ptn;
dicarloj 9:2a47b9ff8911 262 }
dicarloj 9:2a47b9ff8911 263
dicarloj 9:2a47b9ff8911 264
dicarloj 9:2a47b9ff8911 265 }
dicarloj 9:2a47b9ff8911 266 }
dicarloj 9:2a47b9ff8911 267 }
dicarloj 9:2a47b9ff8911 268
dicarloj 10:1163fb31b0a7 269 void bring_in_range()
dicarloj 10:1163fb31b0a7 270 {
dicarloj 10:1163fb31b0a7 271 while(x_off > .5f) x_off = x_off - .25f;
dicarloj 10:1163fb31b0a7 272 while(x_off < -.5f) x_off = x_off + .25f;
dicarloj 10:1163fb31b0a7 273 while(y_off > .5f) y_off = y_off - .25f;
dicarloj 10:1163fb31b0a7 274 while(y_off < -.5f) y_off = y_off + .25f;
dicarloj 10:1163fb31b0a7 275
dicarloj 10:1163fb31b0a7 276 }
dicarloj 10:1163fb31b0a7 277
dicarloj 10:1163fb31b0a7 278 void update_x_rot()
dicarloj 10:1163fb31b0a7 279 {
dicarloj 10:1163fb31b0a7 280 x_rotmat[1][1] = cos(pitch);
dicarloj 10:1163fb31b0a7 281 x_rotmat[1][2] = -sin(pitch);
dicarloj 10:1163fb31b0a7 282 x_rotmat[2][1] = sin(pitch);
dicarloj 10:1163fb31b0a7 283 x_rotmat[2][2] = cos(pitch);
dicarloj 11:537cde55b27f 284
dicarloj 11:537cde55b27f 285 y_rotmat[0][0] = cos(yaw);
dicarloj 11:537cde55b27f 286 y_rotmat[0][2] = sin(yaw);
dicarloj 11:537cde55b27f 287 y_rotmat[2][0] -sin(yaw);
dicarloj 11:537cde55b27f 288 y_rotmat[2][2] = cos(yaw);
dicarloj 11:537cde55b27f 289 //float y_rotmat[3][3] = {{cos(.03), 0, sin(.03)}, {0, 1, 0}, { -sin(.03), 0, cos(.03)}};
dicarloj 11:537cde55b27f 290
dicarloj 11:537cde55b27f 291
dicarloj 10:1163fb31b0a7 292 //float x_rotmat[3][3] = {{1, 0, 0}, {0, cos(.02), -sin(.02)}, {0, sin(.02), cos(.02)}};
dicarloj 10:1163fb31b0a7 293 }
dicarloj 10:1163fb31b0a7 294
dicarloj 9:2a47b9ff8911 295 void draw_lines()
dicarloj 9:2a47b9ff8911 296 {
dicarloj 10:1163fb31b0a7 297 // for(int i = 0; i < n_pts; i++)
dicarloj 10:1163fb31b0a7 298 // {
dicarloj 10:1163fb31b0a7 299 // point_mult(x_rotmat,pts + i,temp,0);
dicarloj 10:1163fb31b0a7 300 // pts[i].x = temp[0];
dicarloj 10:1163fb31b0a7 301 // pts[i].y = temp[1];
dicarloj 10:1163fb31b0a7 302 // pts[i].z = temp[2];
dicarloj 10:1163fb31b0a7 303 // point_mult(y_rotmat,pts + i,temp,0);
dicarloj 10:1163fb31b0a7 304 // pts[i].x = temp[0];
dicarloj 10:1163fb31b0a7 305 // pts[i].y = temp[1];
dicarloj 10:1163fb31b0a7 306 // pts[i].z = temp[2];
dicarloj 10:1163fb31b0a7 307 // }
dicarloj 9:2a47b9ff8911 308
dicarloj 9:2a47b9ff8911 309 for(int i = 0; i < n_lns; i++)
dicarloj 9:2a47b9ff8911 310 {
dicarloj 9:2a47b9ff8911 311 line_t* l = lns + i;
dicarloj 10:1163fb31b0a7 312 point_t* a = l->a;
dicarloj 10:1163fb31b0a7 313 point_t* b = l->b;
dicarloj 11:537cde55b27f 314 //point_mult(x_rotmat,a,temp,0);
dicarloj 11:537cde55b27f 315 //point_mult(x_rotmat,b,temp2,0);
dicarloj 10:1163fb31b0a7 316 bring_in_range();
dicarloj 11:537cde55b27f 317
dicarloj 11:537cde55b27f 318 point_mult(x_rotmat,a,temp,0);
dicarloj 11:537cde55b27f 319 temp_point.x = temp[0];
dicarloj 11:537cde55b27f 320 temp_point.y = temp[1];
dicarloj 11:537cde55b27f 321 temp_point.z = temp[2];
dicarloj 11:537cde55b27f 322 point_mult(y_rotmat,&temp_point,temp2,0);
dicarloj 11:537cde55b27f 323 float x1 = temp2[0] + x_off;
dicarloj 11:537cde55b27f 324 float y1 = temp2[1] + y_off;
dicarloj 11:537cde55b27f 325
dicarloj 11:537cde55b27f 326 point_mult(x_rotmat,b,temp,0);
dicarloj 11:537cde55b27f 327 temp_point.x = temp[0];
dicarloj 11:537cde55b27f 328 temp_point.y = temp[1];
dicarloj 11:537cde55b27f 329 temp_point.z = temp[2];
dicarloj 11:537cde55b27f 330 point_mult(y_rotmat,&temp_point,temp2,0);
dicarloj 10:1163fb31b0a7 331 float x2 = temp2[0] + x_off;
dicarloj 10:1163fb31b0a7 332 float y2 = temp2[1] + y_off;
dicarloj 11:537cde55b27f 333
dicarloj 11:537cde55b27f 334
dicarloj 11:537cde55b27f 335 // float x1 = temp[0] + x_off;
dicarloj 11:537cde55b27f 336 // float x2 = temp2[0] + x_off;
dicarloj 11:537cde55b27f 337 // float y1 = temp[1] + y_off;
dicarloj 11:537cde55b27f 338 // float y2 = temp2[1] + y_off;
dicarloj 10:1163fb31b0a7 339
dicarloj 10:1163fb31b0a7 340 draw_gfx_line(x1,y1,x2,y2);
dicarloj 9:2a47b9ff8911 341 //printf("i: %d, a: %d, b: %d\n",i,l->a,l->b);
dicarloj 9:2a47b9ff8911 342 //printf("%.3f, %.3f, %.3f, %.3f\n",l->a->x,l->a->y,l->b->x,l->b->y);
dicarloj 10:1163fb31b0a7 343 //draw_gfx_line(l->a->x,l->a->y,l->b->x,l->b->y);
dicarloj 9:2a47b9ff8911 344
dicarloj 9:2a47b9ff8911 345 }
dicarloj 9:2a47b9ff8911 346 }