#include #include #include #include #include #include #define PROJECT_NAME "vectors-mover" #define obj_n 1 typedef struct { Point pos; Point vel; Point acc; } OBJECT_INER; typedef struct OBJECT { OBJECT_INER *objs[obj_n]; } OBJECT; #include void constructor(int w, int h, OBJECT_INER *obj){ obj->pos.x = (float)w/2; obj->pos.y = (float)h/2; obj->vel.x = RandomFloat(-1, 1); obj->vel.y = RandomFloat(-1, 1); point_mul(&obj->vel, &(Point){3,3}); obj->acc.x = RandomFloat(-1, 1); obj->acc.y = RandomFloat(-1, 1); point_set_mag(&obj->acc, 0.01); } void init_stuffs(int w, int h, OBJECT_INER *objs, STUFFS *stuff){ srand(time(NULL)); constructor(w,h,&objs[0]); } Point vec_sub(Point A, Point B){ point_sub(&A, &B); return A; } void update(STUFFS *stuff, OBJECT_INER *obj){ Point mouse = { stuff->mx, stuff->my, }; obj->acc = vec_sub(mouse, obj->pos); point_set_mag(&obj->acc, 1); //stuff->obj->acc.x = RandomFloat(-1, 1); //stuff->obj->acc.y = RandomFloat(-1, 1); point_add(&obj->vel,&obj->acc); point_limit(&obj->vel, 5); point_add(&obj->pos, &obj->vel); } void show(SDL_Renderer* renderer,OBJECT_INER *obj){ SDL_SetRenderDrawColor(renderer,150,50,255,255); SDL_RenderFillRect(renderer,&(SDL_Rect){.x = obj->pos.x - 5, .y=obj->pos.y - 5, .w = 10, .h = 10}); } void draw(SDL_Renderer* renderer,SDL_Window* window, STUFFS *stuff){ SDL_SetRenderDrawColor(renderer,0,0,0,255); SDL_RenderClear(renderer); update(stuff, stuff->obj.objs[0]); show(renderer,stuff->obj.objs[0]); SDL_RenderPresent(renderer); } #include