Primitives

Primitives

Deze gids behandelt de kleine, in de praktijk onveranderlijke waardetypen die geometrie- en kleurgegevens door de rest van de API dragen: 2D- en 3D-punten, rechthoeken, transformatie-matrices en kleurwaarden. Je importeert deze meestal niet direct op naam in eenvoudige workflows — ze verschijnen als eigenschapstypen op hoger-niveau-objecten zoals annotaties, afbeeldingsplaatsingen en 3D-weergaven — maar het kennen van hun vorm maakt de eigenschappen van die objecten gemakkelijk leesbaar en te construeren.


Punten: Point en Point3D

Point is een eenvoudige 2D-coördinaat met x en y float-eigenschappen. Point3D is de 3D-tegenhanger, geconstrueerd als Point3D(x, y, z) en met x, y en z float-eigenschappen. Point is het type dat wordt gebruikt voor GradientAxialShading.start / end; Matrix3D-gebaseerde transformaties en 3D-weergaven werken in dezelfde coördinatenruimte die Point3D beschrijft.


Rectangles

Rectangle(x, y, width, height) beschrijft een positie en grootte, en exposeert bovendien berekende left, bottom en right float-eigenschappen naast x, y, width en height. Rectangle is het type achter PDF3DAnnotation.rect, zodat de paginabounds van een 3D-annotatie worden gelezen en ingesteld via dezelfde vorm als elke andere rechthoek in de API.


Transformatiematrices: Matrix en Matrix3D

Matrix bevat een 2D affiene transformatie als zes float-componenten — a, b, c, d, e, f — en biedt twee methoden: translate(x, y) om een translatie in-place toe te passen, en multiply(other) om deze te combineren met een andere Matrix, waarbij de resulterende Matrix wordt geretourneerd.

Matrix3D is de 3D-tegenhanger: een 3×3 rotatie/schaal-blok (m11 tot en met m33) plus een dx, dy, dz translatie-component, geconstrueerd zonder argumenten (Matrix3D()) en ingevuld door zijn eigenschappen in te stellen. PDF3DView.ctm heeft het type Matrix3D | None — de huidige transformatie-matrix voor een opgeslagen 3D-view.


Tips en best practices

  • Construeer Rectangle, Point en Point3D met positionele argumenten in de gedocumenteerde volgorde (x, y[, z] / x, y, width, height) — deze types accepteren gewone floats, geen alleen-keyword-argumenten.
  • Gebruik Matrix.multiply() om transformaties te combineren in plaats van handmatig de zes a–f componenten samen te voegen.
  • Wanneer het type van een eigenschap optioneel is (bijvoorbeeld PDF3DAnnotation.background_color: Color | None of PDF3DView.ctm: Matrix3D | None), controleer dan op None voordat je geneste eigenschappen ervan leest.
  • Gebruik GradientAxialShading alleen wanneer je een tweekleurige lineaire gradient nodig hebt als patroon-kleurenspace; voor een vlak, enkele kleur gebruik je Color direct.
  • De left, bottom en right eigenschappen van Rectangle zijn afgeleid van x, y en width/height — beschouw ze als een handige weergave van hetzelfde rechthoek in plaats van een onafhankelijke toestand.

Algemene Problemen

ProbleemOorzaakOplossing
Rechthoek- of puntcoördinaten lijken verwisseld of onjuist geschaaldPositionele argumenten in de verkeerde volgorde doorgegeven aan Rectangle(x, y, width, height) of Point3D(x, y, z)Controleer de argumentvolgorde nogmaals tegen de handtekening van de constructor — deze typen hebben geen keyword-only afdwinging
AttributeError bij het lezen van een kleur- of matrix-eigenschapEigenschap benaderd op een None-waarde van een optioneel veld (bijv. background_color, ctm)Controleer of de waarde niet None is voordat je geneste eigenschappen benadert
De gradient wordt weergegeven als één effen kleurGradientAxialShading.start en end Point waarden zijn identiek of zeer dicht bij elkaarZorg ervoor dat start en end twee visueel verschillende punten langs de beoogde gradientas aanduiden

FAQ

Moet ik Point, Rectangle of Matrix direct importeren bij normaal gebruik?

Meestal niet — je zult ze het vaakst tegenkomen als het type van een eigenschap (zoals PDF3DAnnotation.rect of PDF3DView.ctm) in plaats van ze vanaf nul te construeren, hoewel niets het construeren ervan direct verhindert wanneer je een zelfstandige waarde nodig hebt.

Wat is het verschil tussen Color en ColorPrimitive?

Color bevat RGB-achtige kanaaldata plus een optionele pattern_color_space voor gradientvullingen. ColorPrimitive is een veel kleiner type dat alleen een transparency-waarde blootlegt.

Hoe combineer ik twee transformaties met Matrix?

Roep matrix_a.multiply(matrix_b) aan, die de samengestelde Matrix retourneert. Gebruik translate(x, y) voor een eenvoudige translatie zonder een volledige matrixvermenigvuldiging op te bouwen.

Wordt Matrix3D ergens buiten 3D-annotaties gebruikt?

Binnen deze cluster verschijnt Matrix3D als het type van PDF3DView.ctm — de huidige transformatie-matrix die gekoppeld is aan een opgeslagen 3D-weergave.


API Reference Samenvatting

Klasse/MethodeBeschrijving
Point2D-coördinaat (x, y float-eigenschappen)
Point3D3D-coördinaat (x, y, z float-eigenschappen)
RectanglePositie en grootte (x, y, width, height, plus berekende left, bottom, right)
Matrix2D affine transformatie (a–f componenten); translate / multiply methoden
Matrix3D3D-transformatiematrix (m11–m33 rotatie/schaalblok, dx/dy/dz translatie)
ColorKleurwaarde met optionele pattern_color_space gradientvulling
ColorPrimitiveMinimale kleurprimitive die transparency blootlegt
GradientAxialShadingAxiale (lineaire) gradient tussen twee Color waarden langs twee Point eindpunten

Zie ook

 Nederlands