Δημοσιεύτηκε: 02 Ιούλ 2010, 19:30
idomeneas έγραψε:Από όσο θυμάμαι εγώ είχα αντιμετωπίσει ένα πρόβλημα με ένα πρόγραμμα CAD, σε Fortran, που έπρεπε να υπολογιστούν πολυώνυμα Bernstein για τις καμπύλες Bezier μέσω knot points. Αν έβαζες πάνω από κάποια σημεία για να ορίσεις την καμπύλη, τότε με integer δεν μπορούσες να βάλεις πάνω από 13 σημεία γιατί υπολόγιζες το 13 ! και γινόταν ανακύκλωση. Την έκανα real(8) για να αυξήσω κάπως το μέγεθος αλλά ως γνωστόν πάλι θα έβγαιναν "παππάδες" μετά από ένα όριο.
Ιδομενέα, στην περιπτωση αυτή δε χρησιμοποιείς τις Bezier στη Bernstein form, οπου χρειάζεσαι τους δυωνυμικούς συντελεστές και κατ' επεκταση το παραγοντικό, αλλά τον αλγοριθμο de Casteljau o οποίος είναι ΠΟΛΥ πιο αποτελεσματικός (βλ. πχ. Curves and surfaces for CAGD, G. Farin). Συγγνώμη για το offtopic, αλλά το θέμα πήγε λιγάκι προς αριθμητική αναλύση που έχει άμεση σχέση με προγραμματισμο.
ΥΓ. Αν όντως χρειάζεσαι τους δυωνυμικούς συντελεστές τότε χρησιμοποιείς τον αριθμητικό υπολογισμό της συνάρτηση Γ, μοιαζει με το τύπο του Stirling αλλά περιέχει και μια επιπλέον διορθωση, βλ. για παράδειγμα Numerical Recipes in Fortran κεφ. 6.1.