Primitives

Primitives

Ez az útmutató a kis, gyakorlati értelemben immutábilis értéktípusokat fed le, amelyek geometriai és színadatokat hordoznak a API további részein: 2D és 3D pontok, téglalapok, transzformációs mátrixok és színértékek. Általában nem importálod ezeket közvetlenül név szerint egyszerű munkafolyamatokban – a magasabb szintű objektumok, például annotációk, képelhelyezések és 3D nézetek tulajdonság típusaiként jelennek meg – de a szerkezetük ismerete megkönnyíti ezeknek az objektumoknak a tulajdonságainak olvasását és létrehozását.


Pontok: Point és Point3D

Point egy egyszerű 2D koordináta, amely x és y float tulajdonsággal rendelkezik. Point3D ennek 3D megfelelője, amelyet Point3D(x, y, z)ként állítanak elő, és x, y és z float tulajdonságokat tesz elérhetővé. Point a GradientAxialShading.start / end számára használt típus; a Matrix3D-alapú transzformációk és 3D nézetek ugyanabban a koordináta térben működnek, amelyet a Point3D leír.


Rectangles

Rectangle(x, y, width, height) egy pozíciót és méretet ír le, és további számított left, bottom és right float tulajdonságokat tesz elérhetővé a x, y, width és height mellett. Rectangle a PDF3DAnnotation.rect mögötti típus, így egy 3D annotáció oldalbeli határai ugyanazon alakzaton keresztül olvashatók és állíthatók, mint bármely más téglalap a API-ban.


Transzformációs mátrixok: Matrix és Matrix3D

Matrix egy 2D affín transzformációt tárol hat float komponensként — a, b, c, d, e, f — és két metódust biztosít: translate(x, y) a transzláció helyben történő alkalmazásához, valamint multiply(other) egy másik Matrix-vel való összekapcsoláshoz, amely a kapott Matrix-t adja vissza.

Matrix3D a 3D megfelelője: egy 3x3-os forgatás/méretezés blokk (m11-től m33-ig) plus egy dx, dy, dz transzlációs komponens, amely argumentumok nélkül jön létre (Matrix3D()) és a tulajdonságainak beállításával töltődik fel. PDF3DView.ctm típusa Matrix3D | None — a mentett 3D nézet aktuális transzformációs mátrixa.


Tippek és bevált gyakorlatok

  • Hozd létre a(z) Rectangle, Point és Point3D objektumokat pozíciós argumentumokkal a dokumentált sorrendben (x, y[, z] / x, y, width, height) — ezek a típusok egyszerű float értékeket várnak, nem csak kulcsszó-argumentumokat.
  • Használd a(z) Matrix.multiply()-t a transzformációk összekapcsolásához ahelyett, hogy kézzel kombinálnád a hat a–f komponenst.
  • Ha egy tulajdonság típusa opcionális (például PDF3DAnnotation.background_color: Color | None vagy PDF3DView.ctm: Matrix3D | None), ellenőrizd a(z) None meglétét, mielőtt beolvasnád a benne lévő belső tulajdonságokat.
  • Használd a(z) GradientAxialShading-t csak akkor, ha két színű lineáris gradientre van szükséged mint mintázat színteret; egy egyenletes, egyetlen színhez használd közvetlenül a(z) Color-t.
  • A(z) Rectangle left, bottom és right tulajdonságai a(z) x, y és width/height-ből származnak — kezeld őket ugyanannak a téglalapnak a kényelmi nézeteként, nem független állapotként.

Gyakori problémák

ProblémaOkJavítás
A téglalap vagy pont koordinátái felcserélődnek vagy helytelenül skálázódnakA pozicionális argumentumok rossz sorrendben lettek átadva a Rectangle(x, y, width, height) vagy Point3D(x, y, z) számáraEllenőrizze újra az argumentumok sorrendjét a konstruktor aláírásával szemben — ezeknél a típusoknál nincs kulcsszó-csak kötelező érvényesítés
AttributeError szín- vagy mátrix tulajdonság olvasásakorTulajdonság elérése egy None értéken egy opcionális mezőből (például background_color, ctm)Ellenőrizze, hogy az érték nem None, mielőtt a beágyazott tulajdonságokhoz hozzáférne
A gradiens egyetlen lapos színként jelenik megGradientAxialShading.start és end Point értékei azonosak vagy nagyon közel vannak egymáshozGyőződjön meg arról, hogy start és end a kívánt gradiens tengely mentén két vizuálisan különálló pontot jelölnek

FAQ

Szükséges-e közvetlenül importálni a Point, Rectangle vagy Matrix osztályokat a normál használat során?

Általában nem — ezeket leggyakrabban egy tulajdonság típusként (például PDF3DAnnotation.rect vagy PDF3DView.ctm) találod, nem pedig a semmiből történő létrehozásuk során, bár semmi sem akadályozza, hogy közvetlenül létrehozd őket, ha önálló értékre van szükséged.

Mi a különbség a Color és a ColorPrimitive között?

Color RGB-stílusú csatorna adatokat tartalmaz, plusz egy opcionális pattern_color_space a színátmenetes kitöltésekhez. ColorPrimitive egy sokkal kisebb típus, amely csak egy transparency értéket tesz elérhetővé.

Hogyan kombinálhatok két transzformációt a Matrix-szel?

Hívd meg a matrix_a.multiply(matrix_b) függvényt, amely visszaadja az összefűzött Matrix-t. Használd a translate(x, y)-t egy egyszerű eltoláshoz, anélkül hogy teljes mátrixszorzást kellene felépítened.

A Matrix3D-t használják valahol a 3D annotációkon kívül?

Ennek a klaszternak a keretében a Matrix3D a PDF3DView.ctm típusaként jelenik meg — a mentett 3D nézethez kapcsolódó aktuális transzformációs mátrix.


API Reference összefoglaló

Osztály/MódszerLeírás
Point2D koordináta (x, y lebegőpontos tulajdonságok)
Point3D3D koordináta (x, y, z float tulajdonságok)
RectanglePozíció és méret (x, y, width, height, plusz számított left, bottom, right)
Matrix2D affín transzformáció (a–f komponens); translate / multiply módszer
Matrix3D3D transzformációs mátrix (m11–m33 forgatás/skálázás blokk, dx/dy/dz eltolás)
ColorSzínérték opcionális pattern_color_space színátmenetes kitöltéssel
ColorPrimitiveMinimális színprimitív, amely transparency-t tartalmaz
GradientAxialShadingAxiális (lineáris) színátmenet két Color érték között két Point végpont mentén

Lásd még:

 Magyar