31 lines
806 B
Plaintext
31 lines
806 B
Plaintext
@startuml
|
|
title Линия: полная схема растризации
|
|
|
|
start
|
|
:Input local endpoints (x0,y0),(x1,y1)\n+ color + thickness;
|
|
:Map endpoints Local -> World -> Buffer;
|
|
:Compute pixel thickness from transform scale;
|
|
if (thickness_px <= 0?) then (yes)
|
|
stop
|
|
endif
|
|
|
|
if (draw_when_outside == false?) then (yes)
|
|
:Clip segment to expanded buffer bounds\n(Liang-Barsky);
|
|
if (segment rejected?) then (yes)
|
|
stop
|
|
endif
|
|
endif
|
|
|
|
:Compute angle-based thickness correction\n(using |dx|/len and |dy|/len);
|
|
:Initialize Bresenham state\ndx,dy,sx,sy,err;
|
|
|
|
while (not reached end point?)
|
|
:Choose effective half-thickness:\nfull in viewport, 0 outside if draw_when_outside;
|
|
:Draw stripe around center pixel\n(along normal axis);
|
|
:Advance Bresenham step by error update;
|
|
endwhile
|
|
|
|
stop
|
|
|
|
@enduml
|