Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Αν έχω δύο σημεία α(α1,α2,α3) και β(β1,β2,β3) πάνω στα οποία κινείται ένα vertex. Χρησιμοποιώντας Linear Interpolation, με ποιον τρόπο μπορώ να υπολογίσω τις συντεταγμένες του χαρακτήρα στο μέσον αβ? 

Δημοσ.

Εφόσον λες στο μέσον θεωρώ οτι είναι αυτονόητο... c( (a1+b1) /2, (a2+b2) /2, (a3+b3) /2) εκτός αν δεν το κατάλαβα καλά γιατί δεν κατανοώ τι σημαίνει κινείται ένα vertex...

Δημοσ.

Σωστό είναι.

 

Ο γενικός τύπος της γραμμικής παρεμβολής είναι

 

P(t) = (1-t)a + t b 

 

όπου t η «απόσταση» σε κλίμακα 0 - 1 από το a.

 

[Μου αρέσει πάντως ο τίτλος «Θεωρητική ερώτηση» :-) ]

Δημοσ.

Δηλαδή η απάντηση είναι το Mindpoint = ( (a1+b1) /2, (a2+b2) /2, (a3+b3) /2) ; Δηλαδή αυτό θεωρείται Linear Intrpolation;

Δημοσ.

Και απο το βιβλιο του Jason Gregory (Game Engine Architecture) κεφαλαιο 4.2.5

 

L = LERP(A, B, β) =  (1 - β)Α + βΒ = [ (1 - β)Αχ + βΒχ, (1 - β)Αy + βΒy, (1 - β)Az + βΒz].  

Για τρισδιαστατα διανυσματα και σημεια.

Και η γεομετρικη εξηγηση στα αγγλικα:

 

 

Geometrically, L = LERP(A, B, β) is the position vector of a point that lies

β percent of the way along the line segment from point A to point B, as shown
in Figure 4.15. Mathematically, the LERP function is just a weighted average of
the two input vectors, with weights (1 – β) and β, respectively. Notice that the
weights always add to 1, which is a general requirement for any weighted
average
.Ut3sft7.png
  • Like 1
Δημοσ.

To διανυσμα μεταξυ 2 σημειων Α και Β ειναι το ΑΒ = (Β.x-A.x), (B.y-A.y), (B.z-A.z)

 

Το μέσο αυτου του διανυσματος εχει ολα του τα στοιχεια στο μισο, ειναι δηλαδη το midΑΒ = (Β.x-A.x) / 2, (B.y-A.y) / 2, (B.z-A.z) / 2

Αν ηθελες το πρωτο 4ο του διασυσματος θα ηταν ολα τα στοιχεια δια 4

Και γενικα για οποιοδηποτε παραγοντα (factor) f, μπορεις να τον πολλαπλασιασεις (ή διαιρεσεις αναλογα πως το βλεπεις) με τα στοιχεια του διανυσματος, αν θες πχ το 15%, θα εχεις το διανυσμα  (Β.x-A.x)*(15/100) , (B.y-A.y) * (15/100), (B.z-A.z)  *(15/100)

O γενικος σου τυπος λοιπον ειναι ΑΒf = (Β.x-A.x)*f , (B.y-A.y) * f, (B.z-A.z) * f

 

Τωρα προσεξε

Αυτο το διανυσμα βρισκεται σε σχεση με την αρχη των αξόνων (είναι σε local space ας πουμε)

 

Για να το βαλεις στο χώρο του κόσμου, σε σχεση δηλαδη με τα υπολοιπα διανυσματα, το βαζεις σε σχέση με το 1ο διανυσμα (το Α), δηλαδη του το προσθετεις. 

Αρα  

A.x +ΑΒf , A.y + ΑΒf.y , A.z + ABf.z

που μεταφραζεται σε

A.x +(Β.x-A.x)*f , A.y + (B.y-A.y) * f , A.z + (B.z-A.z) * f

που απλοποιειται σε

(1 - f) * Ax + Bx * f, (1 - f) * Ay + By * f, (1 - f) * Az + Bz * f

και ακομα πιο απλα

(1 -f) A +  f B 

 

 Ελπιζω να μη σου τα εκανα περισσοτερο κουβαρι....

Δημοσ.

Δηλαδή η απάντηση είναι το Mindpoint = ( (a1+b1) /2, (a2+b2) /2, (a3+b3) /2) ; Δηλαδή αυτό θεωρείται Linear Intrpolation;

 

Ναι αυτό είναι το Midpoint. Πάντως αυτό δεν θεωρείται Linear Interpolation. Είναι απλά μια γεωμετρική σχέση.

Αντιθέτως, η γραμμική παρεμβολή δεν έχει να κάνει με Γεωμετρία. Γενικά, ο όρος χρησιμοποιείται για σημεία που βρίσκονται στο ίδιο επίπεδο. Δεν ξέρω αν στα graphics χρησιμοποιείται και για χώρους με διάσταση μεγαλύτερη του 2.

Διάβασε στο Wikipedia περισσότερα για τη γραμμική παρεμβολή.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...