35 lines
705 B
Plaintext
35 lines
705 B
Plaintext
@startuml
|
|
title Liang-Barsky: отсечение отрезка прямоугольником
|
|
|
|
start
|
|
:Input segment P0,P1 and clip rect;
|
|
:dx = x1-x0, dy = y1-y0;
|
|
:t0 = 0, t1 = 1;
|
|
|
|
:Process boundary x >= left\np=-dx, q=x0-left;
|
|
if (clip test fails?) then (yes)
|
|
stop
|
|
endif
|
|
|
|
:Process boundary x <= right\np=dx, q=right-x0;
|
|
if (clip test fails?) then (yes)
|
|
stop
|
|
endif
|
|
|
|
:Process boundary y >= top\np=-dy, q=y0-top;
|
|
if (clip test fails?) then (yes)
|
|
stop
|
|
endif
|
|
|
|
:Process boundary y <= bottom\np=dy, q=bottom-y0;
|
|
if (clip test fails?) then (yes)
|
|
stop
|
|
endif
|
|
|
|
:Compute clipped points:\nP0' = P0 + t0*(P1-P0)\nP1' = P0 + t1*(P1-P0);
|
|
:Round to integer pixels;
|
|
:Return accepted clipped segment;
|
|
stop
|
|
|
|
@enduml
|