Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- const int MIN_X = -40, MIN_Y = -12,
- MAX_X = 40, MAX_Y = 12;
- typedef struct {
- int x;
- int y;
- } point;
- typedef struct {
- point a;
- point b;
- double rico;
- double m;
- } line;
- void plot_grid();
- void plot_line(line *k);
- int get_highest(int x, int y);
- void calc_line(line *k);
- int main(int argc, char** argv)
- {
- //plot_grid();
- line x = {
- { -25, -7 },
- { 30, 5 },
- 0.0,
- 0.0
- };
- plot_line(&x);
- return 0;
- }
- void calc_line(line *k)
- {
- //line <=> y = (rico)*x + m
- int highest = get_highest(k->a.y, k->b.y);
- double dY, dX;
- //set dY, dX;
- if(highest == k->b.y)
- {
- //verschil in Y en X
- dY = k->b.y - k->a.y;
- dX = k->b.x - k->a.x;
- }
- else
- {
- //verschil in Y en X
- dY = k->a.y - k->b.y;
- dX = k->a.x - k->b.x;
- }
- if(dX != 0)
- k->rico = dY / dX;
- double temp = k->rico * k->b.x;
- if(temp != 0)
- {
- // y = (rico)x + m => m = y/(rico)x
- k->m = k->b.y / temp;
- }
- printf("m = %f, rico = %f\n\n", k->m, k->rico);
- }
- void plot_line(line *k)
- {
- int i, j;
- calc_line(k);
- printf("m = %f, rico = %f\n\n", k->m, k->rico);
- for(i = MIN_Y; i < MAX_Y; i++)
- {
- for(j = MIN_X; j < MAX_X; j++)
- {
- int temp = (int)floor(k->rico * j + k->m) * -1;
- if(temp != i)
- {
- if(j != 0)
- {
- if(i != 0)
- printf(" ");
- else
- printf("-");
- }
- else
- {
- if(i != 0)
- printf("|");
- else
- printf("+");
- }
- }
- else
- {
- printf("*");
- }
- }
- }
- }
- int get_highest(int x, int y)
- {
- int k = 0;
- if(y > x)
- k = y;
- else
- k = x;
- return k;
- }
- void plot_grid()
- {
- int x, y;
- for(y = MIN_Y; y < MAX_Y; y++)
- {
- for(x = MIN_X; x < MAX_X; x++)
- {
- if(x != 0)
- {
- if(y != 0)
- printf(" ");
- else
- printf("-");
- }
- else
- {
- if(y != 0)
- printf("|");
- else
- printf("+");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement