Search
V rámci domácího úkolu naprogramujte implementaci tříd pro reprezentaci grafických primitiv a podporu tisku v režimu CMYK. Začněte tím, že si stáhnete a nahrajete do projektu zdrojové kódy opt02.zip.
Vaše vypracované třídy dejte do balíčku cz.cvut.k36.pr2.hw.hw02.impl.
cz.cvut.k36.pr2.hw.hw02.impl
Úkoly:
enum RGB
enum CMYK
CYAN, MAGENTA, YELLOW, KEY
Ink
Shape
Rectangle, Circle
Line
main
Test
CMYKTest
Pixely jsou reprezentovány pomocí celočíselných souřadnic x, y. Tyto souřadnice udávají pozici středu pixelu. Z toho vyplývá, že pixel má rozměry 1×1.
x, y
Pro operace s grafickými primitivy můžete aplikovat vaše znalosti z analytické geometrie. Anebo si můžete nastudovat dokumentaci k různým Java AWT knihovnám, například Shape, Ellipse2D.Double, Rectangle2D.Double a Line2D.Double. Implementace řešení je čistě na vás, přesnost výpočtu provádějte pomocí double, nikoliv float.
double
float
Pro třídy Rectangle a Circle platí, že se do pixelu na souřadnicích x, y zakreslí pokud bude střed pixelu ležet v oblasti pokryté daným primitivem. Úsečka se do pixelu na souřadnicích x, y vkreslí, pokud je střed pixelu úsečce blíže, než je vzdálenost rohu pixelu od jeho středu.
Rectangle
Circle
Konstruktory pro primitiva jsou následující:
public Rectangle(Color color, double bottomLeftX, double bottomLeftY, double topRightX, double topRightY) public Line(Color color, double startX, double startY, double endX, double endY) public Circle(Color color, double centerX, double centerY, double radius)
Nakonec implementujte interface ShapeHolder do třídy ShapeHolderImpl. Třída bude mít bezparametrický konstruktor. Funkci metod najdete v javadocu interface ShapeHolder.
ShapeHolder
ShapeHolderImpl