inline static bool getClipPoint(int &cx1, int &cy1, int x1, int y1, int x2, int y2) { bool s1 = trfPointOnScr(x1, y1); bool s2 = trfPointOnScr(x2, y2); if (s1 && s2) return false; if (!s1 && s2) { qSwap(x1, x2); qSwap(y1, y2); } double cpx1; double cpx2; double cpy1; double cpy2; int w, h; trfGetScreenSize(w, h); if (liangBarsky(0, w, 0, h, x1, y1, x2, y2, cpx1, cpy1, cpx2, cpy2)) { cx1 = cpx2; cy1 = cpy2; return true; } return false; }
int main() { int gdriver = DETECT, gmode; initgraph(&gdriver, &gmode, ""); setbkcolor(WHITE); cleardevice(); drawAxis(BLACK); int x1,y1,x2,y2; printf("Enter line coordinates\n"); scanf("%d%d%d%d",&x1,&y1,&x2,&y2); Line l = Line{Point{x1,y1}, Point{x2,y2}}; l.plotLineDDA(RED); Rect r; printf("Enter rectangle\n"); scanf("%lf%lf%lf%lf",&r.min.x, &r.min.y, &r.max.x, &r.max.y); r.plotRect(GREEN); liangBarsky(&r, &l, YELLOW); //-> mid pt not working here getch(); closegraph(); return 0; }