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