Primitives

Primitives

Αυτός ο οδηγός καλύπτει τους μικρούς, πρακτικά αμετάβλητους τύπους τιμών που μεταφέρουν δεδομένα γεωμετρίας και χρώματος μέσω του υπόλοιπου του API: σημεία 2Δ και 3Δ, ορθογώνια, μητρώα μετασχηματισμού και τιμές χρώματος. Συνήθως δεν θα εισάγετε αυτούς τους τύπους απευθείας με όνομα σε απλές ροές εργασίας — εμφανίζονται ως τύποι ιδιοτήτων σε αντικείμενα υψηλότερου επιπέδου όπως σημειώσεις, τοποθετήσεις εικόνας και 3Δ προβολές — αλλά η γνώση της δομής τους κάνει τις ιδιότητες αυτών των αντικειμένων εύκολα αναγνώσιμες και κατασκευάσιμες.


Σημεία: Point και Point3D

Point είναι μια απλή 2Δ συντεταγμένη με ιδιότητες τύπου float x και y. Point3D είναι το 3Δ αντίστοιχο του, κατασκευασμένο ως Point3D(x, y, z) και εκθέτει τις ιδιότητες float x, y και z. Point είναι ο τύπος που χρησιμοποιείται για GradientAxialShading.start / end; οι μετασχηματισμοί βάσει Matrix3D και οι 3Δ προβολές λειτουργούν στον ίδιο χώρο συντεταγμένων που περιγράφει το Point3D.


Rectangles

Rectangle(x, y, width, height) περιγράφει θέση και μέγεθος, και επιπλέον εκθέτει υπολογισμένες ιδιότητες float left, bottom και right μαζί με x, y, width και height. Rectangle είναι ο τύπος πίσω από το PDF3DAnnotation.rect, έτσι τα όρια σε σελίδα μιας 3Δ σημείωσης διαβάζονται και ορίζονται μέσω του ίδιου σχήματος με οποιοδήποτε άλλο ορθογώνιο στο API.


Μητρώα Μετασχηματισμού: Matrix και Matrix3D

Matrix περιέχει έναν 2Δ affine μετασχηματισμό ως έξι συνιστώσες τύπου float — a, b, c, d, e, f — και παρέχει δύο μεθόδους: translate(x, y) για την εφαρμογή μιας μετάφρασης επί τόπου, και multiply(other) για τη σύνθεσή του με έναν άλλο Matrix, επιστρέφοντας το αποτέλεσμα Matrix.

Matrix3D είναι το 3Δ αντίστοιχο: ένα μπλοκ περιστροφής/κλιμάκωσης 3x3 (m11 έως m33) συν ένα στοιχείο μετάφρασης dx, dy, dz, κατασκευασμένο χωρίς ορίσματα (Matrix3D()) και γεμισμένο με την ανάθεση των ιδιοτήτων του. PDF3DView.ctm έχει τύπο Matrix3D | None — τον τρέχοντα πίνακα μετασχηματισμού για μια αποθηκευμένη 3Δ προβολή.


Συμβουλές και Βέλτιστες Πρακτικές

  • Δημιουργήστε τα Rectangle, Point και Point3D με θέση ορισμάτων στη τεκμηριωμένη σειρά (x, y[, z] / x, y, width, height) — αυτούς τους τύπους δέχονται απλούς float, όχι ορίσματα μόνο-λέξεων-κλειδιών.
  • Χρησιμοποιήστε το Matrix.multiply() για τη σύνθεση μετασχηματισμών αντί να συνδυάζετε χειροκίνητα τις έξι συνιστώσες a–f.
  • Όταν ο τύπος μιας ιδιότητας είναι προαιρετικός (π.χ. PDF3DAnnotation.background_color: Color | None ή PDF3DView.ctm: Matrix3D | None), ελέγξτε για None πριν διαβάσετε τις ένθετες ιδιότητες σε αυτήν.
  • Ανατρέξτε στο GradientAxialShading μόνο όταν χρειάζεστε ένα γραμμικό διαβάθμιση δύο χρωμάτων ως χώρο χρώματος μοτίβου· για ένα επίπεδο, μονοχρωματικό χρησιμοποιήστε το Color άμεσα.
  • Οι ιδιότητες left, bottom και right του Rectangle προέρχονται από τα x, y και width/height — θεωρήστε τις ως μια βολική προβολή του ίδιου ορθογωνίου αντί για ανεξάρτητη κατάσταση.

Κοινά Προβλήματα

ΠρόβλημαΑιτίαΔιόρθωση
Οι συντεταγμένες του ορθογωνίου ή του σημείου εμφανίζονται ανταλλαγμένες ή κλιμακωμένες λανθασμέναΟρίσματα θέσης που περάστηκαν με λάθος σειρά στο Rectangle(x, y, width, height) ή το Point3D(x, y, z)Επαληθεύστε ξανά τη σειρά των ορισμάτων σε σχέση με την υπογραφή του κατασκευαστή — αυτούς τους τύπους δεν υπάρχει επιβολή ορισμάτων μόνο μέσω λέξεων-κλειδιά
AttributeError όταν διαβάζετε μια ιδιότητα χρώματος ή πίνακαΙδιότητα προσπελάστηκε σε μια τιμή None από ένα προαιρετικό πεδίο (π.χ. background_color, ctm)Ελέγξτε ότι η τιμή δεν είναι None πριν αποκτήσετε πρόσβαση σε ένθετες ιδιότητες
Η διαβάθμιση αποδίδεται ως ένα ενιαίο επίπεδο χρώμαGradientAxialShading.start και end Point τιμές είναι ταυτόσες ή πολύ κοντά μεταξύ τουςΒεβαιωθείτε ότι τα start και end σημειώνουν δύο οπτικά διακριτά σημεία κατά μήκος του προοριζόμενου άξονα διαβάθμισης

FAQ

Χρειάζεται να εισάγω απευθείας τα Point, Rectangle ή Matrix κατά τη φυσιολογική χρήση;

Συνήθως όχι — τα πιο συχνά θα τα συναντήσετε ως τύπο μιας ιδιότητας (όπως PDF3DAnnotation.rect ή PDF3DView.ctm) αντί να τα δημιουργείτε από την αρχή, αν και τίποτα δεν εμποδίζει την άμεση δημιουργία τους όταν χρειάζεστε μια ανεξάρτητη τιμή.

Ποια είναι η διαφορά μεταξύ Color και ColorPrimitive;

Color περιέχει δεδομένα καναλιών σε μορφή RGB συν ένα προαιρετικό pattern_color_space για γεμίσματα διαβάθμισης. ColorPrimitive είναι ένας πολύ μικρότερος τύπος που εκθέτει μόνο μια τιμή transparency.

Πώς μπορώ να συνδυάσω δύο μετασχηματισμούς με το Matrix;

Καλέστε το matrix_a.multiply(matrix_b), το οποίο επιστρέφει το συντεταγμένο Matrix. Χρησιμοποιήστε το translate(x, y) για μια απλή μετάθεση χωρίς να δημιουργήσετε έναν πλήρη πολλαπλασιασμό πινάκων.

Χρησιμοποιείται το Matrix3D οπουδήποτε εκτός των 3D σχολίων;

Μέσα σε αυτό το σύμπλεγμα, το Matrix3D εμφανίζεται ως ο τύπος του PDF3DView.ctm — η τρέχουσα μήτρα μετασχηματισμού που συνδέεται με μια αποθηκευμένη 3D προβολή.


API Reference Σύνοψη

Κλάση/ΜέθοδοςΠεριγραφή
PointΣυντεταγμένη 2Δ (x, y ιδιότητες float)
Point3D3Δ συντεταγμένη (x, y, z ιδιότητες float)
RectangleΘέση και μέγεθος (x, y, width, height, συμπεριλαμβανομένων των υπολογιζόμενων left, bottom, right)
Matrix2Δ αφινική μετασχηματισμός (a–f συνιστώσες); translate / multiply μέθοδοι
Matrix3DΜήτρα 3Δ μετασχηματισμού (m11–m33 μπλοκ περιστροφής/κλίμακας, dx/dy/dz μετάφραση)
ColorΤιμή χρώματος με προαιρετικό pattern_color_space γέμισμα διαβάθμισης
ColorPrimitiveΕλάχιστο χρωματικό primitive που εκθέτει transparency
GradientAxialShadingΑξονική (γραμμική) διαβάθμιση μεταξύ δύο τιμών Color κατά μήκος δύο άκρων Point

Δείτε επίσης

 Ελληνικά