Το λογισμικό μαςOur software

Ο κανόνας, ζωντανά στη σελίδαThe rule, live in the page

Ο ίδιος κανόνας, τρεις φορές, με μία διάσταση παραπάνω κάθε φορά: σε καμπύλη, σε επιφάνεια, σε στερεό. Και τα τρία υπολογίζονται μέσα στον browser σε κάθε καρέ — σύρε τα, τίποτα δεν είναι προϋπολογισμένο. The same rule three times, one dimension further each time: on a curve, on a surface, on a solid. All three are computed inside the browser on every frame — drag them, nothing here is precomputed.

Ο κανόνας, σε δύο διαστάσειςThe rule, in two dimensions cubic B-spline · 1D

Σύρε τα τετράγωναDrag the squares

ΚορυφέςVertices
8 → 512
Σε επιφάνειαOn a surface
×4k

πλέγμα ελέγχουcontrol cage οριακή καμπύληlimit curve

Οι δύο κανόνες που τρέχουνThe two rules running

Κάθε επίπεδο παράγει μία νέα κορυφή για κάθε ακμή και μετακινεί κάθε παλιά κορυφή, με σταθερά βάρη: Each level produces one new vertex per edge and moves every old vertex, with fixed weights:

κορυφήvertex  V′ = (P₋₁ + 6P + P₊₁) / 8
ακμήedge    E  = (P + P₊₁) / 2

Αυτή είναι ακριβώς η μονοδιάστατη περίπτωση του Catmull–Clark. Στις επιφάνειες ο ίδιος κανόνας γενικεύεται σε έδρες, ακμές και κορυφές αυθαίρετου βαθμού — και αυτό υλοποιεί ο πυρήνας του Π1. This is exactly the one-dimensional case of Catmull–Clark. On surfaces the same rule generalises to faces, edges and vertices of arbitrary valence — and that is what the D1 core implements.

  • ΕπίπεδαLevelsL0 είναι το πλέγμα που έγραψες· L∞ είναι η οριακή καμπύλη, εκεί όπου η επανάληψη συγκλίνει.L0 is the cage you authored; L∞ is the limit curve, where the iteration converges.
  • ΚόστοςCostΚάθε επίπεδο διπλασιάζει τις κορυφές σε καμπύλη και τις τετραπλασιάζει σε επιφάνεια — γι' αυτό μετράει η απευθείας αποτίμηση.Every level doubles the vertices on a curve and quadruples them on a surface — which is why direct evaluation matters.
  • ΝτετερμινισμόςDeterminismΊδιες κορυφές, ίδια καμπύλη — σε αυτή τη σελίδα όπως και στον πυρήνα.Same vertices, same curve — in this page as in the core.

Τίποτα δεν είναι προϋπολογισμένο: ο κανόνας εκτελείται στον browser σε κάθε σύρσιμο.Nothing here is precomputed: the rule runs in the browser on every drag.

Ο κανόνας, σε επιφάνειαThe rule, on a surface Catmull–Clark · 2D

Σύρε τα τετράγωναDrag the squares

ΈδρεςFaces
20
Μη καν. / καν.Extraord. / reg.
1 / 10

Οι τρεις μέσοι όροιThe three averages

πλέγμα ελέγχουcontrol cage εκλεπτυσμένο πλέγμαrefined mesh

Οι τρεις μέσοι όροι, ζωντανάThe three averages, live

Σε επιφάνεια ο κανόνας δεν είναι δύο βάρη αλλά τρεις μέσοι όροι, κι αυτοί ακριβώς σχεδιάζονται πάνω στο πλέγμα: On a surface the rule is not two weights but three averages — and those are exactly what is drawn on the mesh:

F   = (1/n) · Σ v
E   = (v₁ + v₂ + F₁ + F₂) / 4
P′  = ( F̄ + 2R̄ + (n − 3)·P ) / n

Η τεκμηρίωση τα εξηγεί ένα-ένα. Εδώ τρέχουν: κάθε n-γωνο γίνεται n τετράπλευρα, οπότε μετά το πρώτο πέρασμα το πλέγμα είναι καθαρά τετραπλευρικό. The documentation explains them one by one. Here they run: every n-gon becomes n quads, so after the first pass the mesh is purely quadrilateral.

  • Μη κανονικήExtraordinaryΤο κέντρο έχει βαθμό 5, όχι 4. Ανέβασε επίπεδο και δες τον μετρητή: η μη κανονική κορυφή μένει μία για πάντα, όσο κι αν πυκνώσει το πλέγμα γύρω της.The centre has valence 5, not 4. Step up a level and watch the counter: the extraordinary vertex stays at one forever, however dense the mesh around it becomes.
  • Δοκίμασε n = 4Try n = 4Ο μετρητής γράφει μηδέν. Σε τετραπλευρικό πλέγμα κανονική είναι ακριβώς η κορυφή βαθμού 4, οπότε το κέντρο παύει να είναι εξαίρεση και η οριακή επιφάνεια είναι δικυβική B-spline — ο κανόνας δεν χρειάζεται καν. Γύρνα στο 5 και η μονάδα επιστρέφει. Μία κορυφή είναι όλη η διαφορά.The counter reads zero. On a quad mesh the regular valence is exactly 4, so the centre stops being an exception and the limit surface is a bicubic B-spline — the rule is not even needed. Go back to 5 and the one returns. A single vertex is the whole difference.
  • ΧείλοςBoundaryΟι κορυφές του περιγράμματος δεν έχουν έδρες γύρω τους, οπότε παίρνουν τον κανόνα της καμπύλης — τον ίδιο που τρέχει το διάγραμμα από πάνω.Boundary vertices have no ring of faces, so they take the curve rule — the very one running in the diagram above.
  • Γιατί 1978Why 1978Μόλις ο βαθμός φύγει από το 4, το σχήμα βγαίνει εκτός εμβέλειας της δικυβικής B-spline — και το χρειάζεσαι, γιατί ελάχιστα πραγματικά αντικείμενα είναι καθαρά καρέ. Ακριβώς αυτό λύνει η εργασία των Catmull και Clark.The moment the valence leaves 4, the shape falls outside the reach of a bicubic B-spline — and you need it to, because very few real objects are a clean grid. That is precisely what Catmull and Clark’s paper solves.

Πληκτρολόγιο: R για επαναφορά της ροζέτας.Keyboard: R to reset the rosette.

Ο κανόνας, σε τρεις διαστάσειςThe rule, in three dimensions Catmull–Clark · 3D

Σύρε τις κορυφέςDrag the vertices

ΈδρεςFaces
384
Μη καν. / καν.Extraord. / reg.
8 / 378

πλέγμα ελέγχουcontrol cage · 8 κορυφέςvertices οριακή επιφάνειαlimit surface

Οκτώ κορυφές μέσαEight vertices in

Το κόκκινο κουτί είναι όλο το αρχείο: οκτώ κορυφές και έξι τετράπλευρα. Ό,τι άλλο βλέπεις το υπολογίζει ο κανόνας — 24, 96, 384, 1.536 έδρες, χωρίς να γραφτεί ούτε μία επιπλέον κορυφή στην πηγή. The red box is the entire file: eight vertices and six quads. Everything else you see is computed by the rule — 24, 96, 384, 1,536 faces, without a single extra vertex being authored.

Η οριακή επιφάνεια κάθεται μέσα στο πλέγμα ελέγχου, και γι' αυτό δεν την κλιμακώνουμε: αυτή ακριβώς είναι η σχέση των δύο. The limit surface sits inside the control cage, and that is why it is not scaled up to fit: this is exactly the relationship between the two.

Και είναι γραφόμενο: σύρε ένα κόκκινο τετράγωνο και η επιφάνεια ξαναϋπολογίζεται στο ίδιο καρέ — αυτό κάνει ένας σχεδιαστής, μόνο που εδώ φαίνεται. Ο επιλογέας αλλάζει κλουβί (τετράεδρο, οκτάεδρο, πρίσμα): ο κανόνας μένει ένας και ο ίδιος, ακόμη και όταν οι έδρες παύουν να είναι τετράπλευρες. And it is authorable: drag a red square and the surface is recomputed in the same frame — that is what a designer does, only here you can watch it. The picker swaps the cage (tetrahedron, octahedron, prism): the rule stays one and the same, even when the faces stop being quads.

  • Και οι οκτώAll eightΣε τετραπλευρικό πλέγμα κανονική είναι η κορυφή βαθμού 4. Ο κύβος έχει παντού βαθμό 3, άρα κάθε κορυφή του είναι μη κανονική — και μένουν οκτώ σε κάθε επίπεδο.On a quad mesh the regular valence is 4. Every corner of a cube has valence 3, so every one of them is extraordinary — and there are still exactly eight at every level.
  • Χωρίς WebGLNo WebGLΠροοπτική, απόρριψη πίσω εδρών, ταξινόμηση κατά βάθος και σκίαση από μία πηγή, γραμμένα σε canvas 2D. Καμία βιβλιοθήκη, κανένα shader.Perspective, backface culling, depth sorting and single-source shading, written against canvas 2D. No library, no shader.
  • ΣτεγανόWatertightΚάθε ακμή ανήκει σε ακριβώς δύο έδρες σε κάθε επίπεδο. Δεν επιδιορθώνεται — προκύπτει από τον κανόνα.Every edge belongs to exactly two faces at every level. It is not repaired — it falls out of the rule.

Πληκτρολόγιο: βελάκια για περιστροφή, κενό για παύση, R για επαναφορά.Keyboard: arrow keys to rotate, space to pause, R to reset.

ΈλεγχοςControl

Ημι-αιχμηρή τσάκισηSemi-sharp crease

Η οξύτητα δεν είναι διακόπτης· είναι συνεχής παράμετρος — η ιδέα των DeRose, Kass και Truong στο SIGGRAPH 1998. Σύρε τον δείκτη από το 0 στο ∞ και δες την ίδια κορυφή να περνά από τέλεια λεία σε πραγματική ακμή. Η τεκμηρίωση εξηγεί το γιατί. Sharpness is not a switch; it is a continuous parameter — the idea DeRose, Kass and Truong published at SIGGRAPH 1998. Drag the handle from 0 to ∞ and watch the same vertex go from perfectly smooth to a true edge. The documentation explains the why.

Ημι-αιχμηρή τσάκισηSemi-sharp crease sharpness = 0.0
0 · λείοsmooth 24 ∞ · αιχμηρόsharp

Πώς δουλεύειHow it works

Σε μια ακμή δίνεται τιμή οξύτητας s. Για τα πρώτα ⌊s⌋ επίπεδα υποδιαίρεσης εφαρμόζονται οι αιχμηροί κανόνες (η κορυφή μένει ακίνητη)· στο επόμενο επίπεδο γίνεται γραμμική ανάμειξη ανάμεσα σε αιχμηρό και λείο κανόνα με βάρος το δεκαδικό μέρος· από εκεί και πέρα ισχύουν οι κανονικοί λείοι κανόνες. An edge is tagged with a sharpness value s. For the first ⌊s⌋ levels the sharp rules apply (the vertex stays put); at the next level the sharp and smooth rules are blended by the fractional part; beyond that the ordinary smooth rules take over.

Αποτέλεσμα: s = 0 δίνει τέλεια λεία μετάβαση, s = ∞ δίνει πραγματική ακμή, και οτιδήποτε ενδιάμεσα δίνει ελεγχόμενο fillet — χωρίς να προσθέσεις ούτε μία κορυφή στο πλέγμα. The result: s = 0 gives a perfectly smooth transition, s = ∞ gives a true edge, and anything between gives a controlled fillet — without adding a single vertex to the cage.

Ο δείκτης δεν διαλέγει ανάμεσα σε έτοιμα σχήματα: κάθε θέση του ξανατρέχει τους κανόνες με νέο s.The handle does not pick between ready-made shapes: every position re-runs the rules with a new s.

ΕφαρμογήApplication

Θα το αντέξει;Will it hold?

Ένας βραχίονας ραφιού βιδωμένος στον τοίχο. Γράψε εσύ το κομμάτι — μήκος, πλάτος, ύψος, φορτίο, υλικό, διατομή — και η σελίδα το λύνει σε κάθε κίνηση: πόσο κατεβαίνει, πόση τάση σηκώνει, πόσο ζυγίζει. Σύρε τον καμβά για να το δεις από όπου θέλεις. A shelf bracket bolted to a wall. You write the part — length, width, height, load, material, cross-section — and the page solves it on every move: how far it drops, how much stress it carries, what it weighs. Drag the canvas to look at it from anywhere.

Βραχίονας ραφιούShelf bracket · 3D I = 1,280 mm⁴

ΠαραμόρφωσηDeformation ×3 · το χρώμα είναι η τάση κάμψηςthe colour is bending stress

×1.0

Σύρε για περιστροφήDrag to rotate · ρόδα για ζουμwheel to zoomδύο δάχτυλα για ζουμpinch to zoom

ΜήκοςLength 300 mm

ΠλάτοςWidth 30 mm

ΎψοςHeight 8 mm

ΦορτίοLoad 20 kg

ΥλικόMaterial

ΔιατομήCross-section

ΚατεβαίνειDrops by
6.57 mm
Μέγιστη τάσηPeak stress
184 MPa
Συντ. ασφαλείαςSafety factor
1.28
ΜάζαMass
565 g

τάση μέσα στο όριο του υλικούstress within the material’s limit πέρα από το όριο διαρροήςpast the yield limit

  • Γύρνα τη λάμαTurn the plateΠλάτος 30, ύψος 10 → πλάτος 10, ύψος 30. Ίδιο μέταλλο, ίδια μάζα (707 g), ίδιο κόστος — και κατεβαίνει 3.36 mm αντί για 0.37: ακριβώς 9 φορές πιο δύσκαμπτη, γιατί η ροπή αδρανείας πάει με τον κύβο του ύψους.Width 30, height 10 → width 10, height 30. Same metal, same mass (707 g), same cost — and it drops 3.36 mm instead of 0.37: exactly 9 times stiffer, because the second moment of area goes with the cube of the height.
  • Άλλαξε υλικόSwap the materialΑλουμίνιο: κατεβαίνει τριπλάσια, αλλά ο συντελεστής ασφαλείας ανεβαίνει και το χρώμα δεν κουνιέται. Το σ = M·y/I δεν έχει μέσα του το E — δυσκαμψία και αντοχή είναι δύο πράγματα.Aluminium: it drops three times further, yet the safety factor rises and the colour does not move. σ = M·y/I has no E in it — stiffness and strength are two different things.
  • Άδειασε τη μέσηEmpty the middleΚοίλη διατομή: η μάζα πέφτει στο 39%, η δυσκαμψία μένει στο 73%. Το υλικό πάνω στον ουδέτερο άξονα σχεδόν δεν δουλεύει — γι’ αυτό οι σωλήνες είναι κούφιοι.Hollow: the mass falls to 39%, the stiffness stays at 73%. Material on the neutral axis barely works — which is why tubes are hollow.

Πού σταματά το μοντέλο. Θεωρία δοκού Euler–Bernoulli, γραμμική και μικρών μετατοπίσεων: μόλις η βύθιση περάσει το L/12 ο πρώτος μετρητής κοκκινίζει — όχι επειδή έσπασε το ράφι, αλλά επειδή έπαψε να ισχύει η εξίσωση. Δεν υπολογίζει βίδες, κόπωση, λυγισμό ούτε συγκέντρωση τάσεων στις γωνίες. Το ζητούμενο εδώ είναι άλλο: ότι η γεωμετρία και η ανάλυση μπορούν να μοιράζονται μία περιγραφή — οι ίδιες συναρτήσεις B-spline που σχεδιάζουν το κομμάτι το λύνουν κιόλας, χωρίς μετάφραση ανάμεσά τους. Το γιατί έχει σημασία το εξηγεί η ισογεωμετρική ανάλυση· τι κοστίζει η μετάφραση όταν γίνεται, το δείχνει η CAE. Where the model stops. Euler–Bernoulli beam theory, linear and small-displacement: once the deflection passes L/12 the first counter turns red — not because the shelf broke, but because the equation stopped applying. It does not account for bolts, fatigue, buckling or stress concentration at corners. The point here is a different one: that geometry and analysis can share one description — the same B-spline functions that draw the part also solve it, with no translation between them. Why that matters is explained under isogeometric analysis; what the translation costs when it does happen is shown under CAE.

Πληκτρολόγιο: βελάκια για περιστροφή, + και − για ζουμ, R για επαναφορά.Keyboard: arrow keys to rotate, + and − to zoom, R to reset.

1.1 BenchmarkBenchmark

Κέλυφος Scordelis-LoThe Scordelis-Lo shell

Το πιο γνωστό δοκίμιο ελέγχου για κελύφη: ένα κυλινδρικό στέγαστρο που κρέμεται από δύο άκαμπτα διαφράγματα και κρατιέται μόνο του. Ανοίγει με τα νούμερα των Scordelis & Lo — 25 × 50 m, τόξο 80°, πάχος 25 cm — αλλά όλα γράφονται: ακτίνα, άνοιγμα, μήκος, πάχος, φορτίο, υλικό. Και από πάνω γράφεται η διακριτοποίηση, γιατί η ερώτηση του benchmark μένει η ίδια: πόσους αγνώστους χρειάζεσαι για να βρεις τη σωστή απάντηση; The best-known test case for shells: a cylindrical roof hanging from two rigid diaphragms and carrying nothing but itself. It opens on the numbers of Scordelis & Lo — 25 × 50 m, an 80° arc, 25 cm thick — but every one of them is yours to write: radius, arc, length, thickness, load, material. So is the discretisation, because the benchmark still asks one question: how many unknowns do you need to reach the right answer?

Το πρόβλημαThe problem R = 25 m · L = 50 m · 2φ = 80° · t = 0.25 m
g = 90 kN/m² R = 25 2φ = 80° t ελεύθερη free edge ακμή   L = 50 άκαμπτο διάφραγμα rigid diaphragm ελεύθερη ακμή free edge ελεύθερη ακμή free edge

εδράζεται — u_x = u_z = 0supported — u_x = u_z = 0 ελεύθερη ακμή — εδώ μετριέται η βύθισηfree edge — the deflection is measured here

Ισογεωμετρική ανάλυση · κέλυφος Kirchhoff–LoveIsogeometric analysis · Kirchhoff–Love shell p = 2 · 300 DOF · t = 0.25 m

ΠαραμόρφωσηDeformation ×10 · το χρώμα είναι το επιλεγμένο πεδίο, με το μηδέν στο λευκόthe colour is the selected field, with zero at white

×1.0

Σύρε για περιστροφήDrag to rotate · ρόδα για ζουμwheel to zoomδύο δάχτυλα για ζουμpinch to zoom

ΣτοιχείαElements 8×8

ΒαθμόςDegree

ΑκτίναRadius 25 m

ΤόξοArc 80°

ΜήκοςLength 50 m

ΠάχοςThickness 0.25 m

ΦορτίοLoad 90 kN/m²

Δίκτυο σεNet on

ΥλικόMaterial E = 4.32·10⁸

ΠεδίοField

ΘέαView

u_z ελεύθερης ακμήςu_z at the free edge
-0.2398 m
Βύθιση / πάχοςDrop / thickness
×0.96
Απόκλιση απόOff 0.3006
-20.24 %
ΧρόνοςTime
— ms

αρνητικόnegative · -0.2398 m θετικόpositive · +0.0262 m

  • Πύκνωσε το πλέγμαRefine the meshΜε 8×8 στοιχεία η απόκλιση είναι −20.24%: το κέλυφος βγαίνει πολύ πιο δύσκαμπτο απ’ ό,τι είναι. Πάτα 32×32 και πέφτει στο +0.58% — 3.468 άγνωστοι, που τώρα λύνονται σε φέτες: το κέλυφος γυρίζει με το ποντίκι όσο λύνεται, και ο μετρητής λέει πού βρίσκεται.With 8×8 elements the deviation is −20.24%: the shell comes out far stiffer than it is. Press 32×32 and it falls to +0.58% — 3,468 unknowns, now solved in slices: the shell keeps turning under the mouse while it solves, and the counter says how far it got.
  • Ή ανέβασε τον βαθμόOr raise the degreep = 4 με μόλις 4×4 στοιχεία δίνει +0.53%, δηλαδή την ίδια ακρίβεια με 192 αγνώστους αντί για 3.468 — δεκαοκτώ φορές λιγότερους. Αυτό είναι το k-refinement: ο βαθμός πρώτα, οι κόμβοι μετά.p = 4 with just 4×4 elements gives +0.53%, the same accuracy with 192 unknowns instead of 3,468 — eighteen times fewer. That is k-refinement: degree first, knots after.
  • Άνοιξε το τόξοOpen the arcΣτις 20° το κέλυφος γίνεται σχεδόν επίπεδη λωρίδα και κατεβαίνει 3.78 m· στις 120° η βύθιση πέφτει στα 0.166 m — εικοσιτρείς φορές λιγότερο, με το ίδιο ακριβώς πάχος και το ίδιο υλικό. Ένα κέλυφος δεν στέκεται με τη μάζα του, στέκεται με την καμπυλότητά του. Και όσο βαθαίνει το τόξο, τόσο πιο πυκνό πλέγμα θέλει: στα 8×8 το σφάλμα ανεβαίνει από −21% στις 80° σε −44% στις 140°.At 20° the shell is almost a flat strip and drops 3.78 m; at 120° the deflection falls to 0.166 m — twenty-three times less, at exactly the same thickness and in the same material. A shell does not stand up by its mass, it stands up by its curvature. And the deeper the arc, the finer the mesh it wants: on 8×8 the error climbs from −21% at 80° to −44% at 140°.
  • Άλλαξε υλικόSwap the materialΣκυρόδεμα αντί για το φανταστικό υλικό του benchmark: η βύθιση δεκατετραπλασιάζεται, και το πεδίο n11 δεν κουνιέται ούτε ένα kN/m. Σε γραμμικό ελαστικό κέλυφος οι εντατικές δεν ξέρουν το E — το ξέρουν μόνο οι μετατοπίσεις. Το ίδιο και το φορτίο: διπλάσιο g, διπλάσια βύθιση, ίδιο σχήμα.Concrete instead of the benchmark’s fictitious material: the deflection grows fourteenfold, and the n11 field does not shift by one kN/m. In a linear elastic shell the stress resultants do not know E — only the displacements do. Same with the load: twice the g, twice the drop, identical shape.
  • Γύρνα το δίκτυο στη μέσηMove the net to the middleΤα εννιά control points του πίνακα δίνουν R + t/2: την έξω επιφάνεια, όχι τη μέση — έτσι τα έγραψε η βιβλιογραφία. Με p = 4 και 8×8, γυρίζοντας το δίκτυο στη μέση επιφάνεια η απόκλιση πέφτει από +0.70% σε 0.00%. Δώδεκα εκατοστά ακτίνας, μισό τοις εκατό βύθιση.The nine control points of the table sit on R + t/2: the outer surface, not the middle one — that is how the literature wrote them. With p = 4 and 8×8, moving the net to the mid-surface drops the deviation from +0.70% to 0.00%. Twelve centimetres of radius, half a percent of deflection.
Τα εννιά control points του δικτύου αναφοράς και οι δεσμεύσεις τουςThe nine control points of the reference net and their constraints
ID X (m) Y (m) Z (m) ΒάροςWeight ΔέσμευσηConstraint
116.1500.00019.2471.000u_x, u_z
20.0000.00032.7980.766u_x, u_z
3−16.1500.00019.2471.000u_x, u_z
416.15025.00019.2471.000
50.00025.00032.7980.766
6−16.15025.00019.2471.000
716.15050.00019.2471.000u_x, u_z
80.00050.00032.7980.766u_x, u_z
9−16.15050.00019.2471.000u_x, u_z

Εννιά σημεία, p = q = 2, Ξ = Η = [0, 0, 0, 1, 1, 1]: ένα στοιχείο Bézier ανά κατεύθυνση, και ο πίνακας ξαναγράφεται μόλις αλλάξει η γεωμετρία. Οι πέντε τιμές — ακτίνα, τόξο, μήκος, πάχος, φορτίο — γράφονται και μπαίνουν στη λύση με το κουμπί «Επίλυση», ή με Enter μέσα στο πεδίο. Υλικό ομοιογενές και γραμμικά ελαστικό, ν = 0. Το φορτίο είναι ανά μονάδα επιφάνειας της μέσης επιφάνειας. Πληκτρολόγιο: βελάκια για περιστροφή, + και − για ζουμ, R για επαναφορά.Nine points, p = q = 2, Ξ = Η = [0, 0, 0, 1, 1, 1]: one Bézier element per direction, and the table is rewritten the moment the geometry changes. The five values — radius, arc, length, thickness, load — are typed and enter the solution with the «Solve» button, or with Enter inside the field. Homogeneous, linearly elastic material, ν = 0. The load is per unit area of the mid-surface. Keyboard: arrow keys to rotate, + and − to zoom, R to reset.

Τι μετράει ο μετρητής. Για τα νούμερα του benchmark η βιβλιογραφία δίνει u_z = 0.3006 m στη μέση της ελεύθερης ακμής (και 0.3024 m σε ρηχή αναλυτική λύση), και ο μετρητής συγκρίνει με αυτό. Μόλις αλλάξει έστω και ένα νούμερο, τιμή βιβλιογραφίας δεν υπάρχει — οπότε η σύγκριση γίνεται με την πυκνή λύση p = 4, 16×16 του ίδιου ακριβώς προβλήματος, που τρέχει από πίσω, και ο μετρητής το γράφει από πάνω του. Ό,τι μένει είναι σφάλμα λύσης: επειδή η γεωμετρία είναι ακριβής από το πρώτο σημείο — ο κύκλος είναι κύκλος, όχι πολύγωνο που τείνει σε κύκλο — σφάλμα γεωμετρίας δεν υπάρχει. Στα πεπερασμένα στοιχεία τα δύο σφάλματα πέφτουν μαζί και δεν ξεχωρίζουν. What the counter measures. For the benchmark’s numbers the literature gives u_z = 0.3006 m at the midpoint of the free edge (and 0.3024 m from a shallow analytical solution), and that is what the counter compares against. Change a single number and there is no literature value left — so the comparison switches to the dense p = 4, 16×16 solution of the very same problem, computed in the background, and the counter says so in its own label. What remains is solution error: because the geometry is exact from the very first point — the circle is a circle, not a polygon tending to one — there is no geometry error. In finite elements the two errors fall together and cannot be told apart.

Πού σταματά το μοντέλο. Γραμμική ελαστικότητα και μικρές μετατοπίσεις, χωρίς διατμητική παραμόρφωση (Kirchhoff–Love): το κέλυφος του benchmark κατεβαίνει 0.30 m, δηλαδή περισσότερο από το πάχος του — είναι δοκίμιο σύγκρισης μεθόδων, όχι μελέτη στέγης. Γι’ αυτό υπάρχει ο μετρητής βύθιση / πάχος: πάνω από το ×2 κοκκινίζει, όχι επειδή έσπασε το κέλυφος αλλά επειδή έπαψε να ισχύει η εξίσωση. Το πεδίο του πάχους δείχνει και κάτι άλλο: στα 0.10 m η βύθιση δεν δεκαπενταπλασιάζεται όπως θα έλεγε το της κάμψης, μόνο επταπλασιάζεται (σε πλέγμα που έχει συγκλίνει) — γιατί το μεγαλύτερο μέρος του φορτίου ταξιδεύει με μεμβρανικές δυνάμεις, που πάνε με t. Η μέθοδος είναι η ίδια με του βραχίονα από πάνω, μία διάσταση παραπάνω: ισογεωμετρική ανάλυση με τις ίδιες συναρτήσεις που γράφουν τη γεωμετρία. Where the model stops. Linear elasticity and small displacements, with no shear deformation (Kirchhoff–Love): the benchmark shell drops 0.30 m, more than its own thickness — it is a yardstick for comparing methods, not a roof design. That is what the drop / thickness counter is for: past ×2 it turns red, not because the shell broke but because the equation stopped applying. The thickness field shows something else too: at 0.10 m the deflection does not grow fifteenfold as the of bending would say, only sevenfold (on a converged mesh) — because most of the load travels as membrane force, which goes with t. The method is the same as the bracket above, one dimension further: isogeometric analysis with the very functions that write the geometry.

1.2 ΕργαστήριοWorkbench

Η βάση, γραμμένηThe basis, written out

Τα διαγράμματα από πάνω χρησιμοποιούν τη βάση και δείχνουν το αποτέλεσμα. Εδώ η βάση είναι το αποτέλεσμα: γράψε το διάνυσμα κόμβων Ξ και τον βαθμό p, και η σελίδα τρέχει την αναδρομή Cox–de Boor και σχεδιάζει τις συναρτήσεις μία-μία — μαζί με τη συνέχεια Cp−m που γράφει κάθε κόμβος. Δώσε και δεύτερο άξονα, Η με βαθμό q, και από τα δύο βγαίνουν οι συναρτήσεις σχήματος NURBS Ri,j(ξ,η). The diagrams above use the basis and show the result. Here the basis is the result: write the knot vector Ξ and the degree p, and the page runs the Cox–de Boor recursion and draws the functions one by one — together with the Cp−m continuity each knot writes. Add a second axis, Η with degree q, and the two of them give the NURBS shape functions Ri,j(ξ,η).

Cox–de Boor · NURBS p = 2 · q = 2 · ξ = 1.5 · η = 0.5

Ni,p(ξ) · άξονας ξthe ξ axis

Mj,q(η) · άξονας ηthe η axis

Ξ ·

Η ·

Ri,j(ξ,η) = NiMjwij / ΣΣNMw · η κυρίαρχη στη θέση (ξ,η)the dominant one at (ξ,η)

Σύρε για περιστροφήDrag to rotate

Διάνυσμα ΞKnot vector Ξ n = 5

Διάνυσμα ΗKnot vector Η m = 3

Θέση ξPosition ξ 1.5

Θέση ηPosition η 0.5

Βάρος τηςWeight of R w = 1.00

ΑναδρομήRecursion

ΣυναρτήσειςFunctions
5 × 3 = 15
Ενεργές εδώNon-zero here
9
ΆθροισμαSum
1.000
ΚυρίαρχηDominant
R₃,₂ = 0.375

οι συναρτήσεις — έντονη η κυρίαρχηthe functions — the dominant one in bold ό,τι γράφεις: η θέση, οι κόμβοι, τα σκαλιά της αναδρομήςwhat you write: the position, the knots, the steps of the recursion

  • Ξ = {0,0,0,1,2,3,3,3}, p = 2Ξ = {0,0,0,1,2,3,3,3}, p = 2Πέντε συναρτήσεις — n = πλήθος κόμβων − p − 1 — και τρία στοιχεία. Στο ξ = 1.5 οι μη μηδενικές είναι ακριβώς τρεις: 0.125, 0.75, 0.125. Στον κόμβο ξ = 1 γίνονται δύο ίσες, 0.5 και 0.5. Ποτέ περισσότερες από p+1, και το άθροισμα πάντα 1: αυτά τα δύο μαζί είναι ο λόγος που ο πίνακας της ανάλυσης βγαίνει αραιός και η γεωμετρία μένει στο κυρτό περίβλημα.Five functions — n = number of knots − p − 1 — and three elements. At ξ = 1.5 exactly three are non-zero: 0.125, 0.75, 0.125. At the knot ξ = 1 they become two equal ones, 0.5 and 0.5. Never more than p+1, and the sum always 1: those two together are why the analysis matrix comes out sparse and the geometry stays inside the convex hull.
  • Διπλασίασε έναν κόμβοDouble a knotΓράψε 0 0 0 1 1 2 3 3 3. Ο κόμβος ξ = 1 έχει τώρα πολλαπλότητα 2, οπότε η συνέχεια εκεί πέφτει από C¹ σε C⁰ — και μία συνάρτηση φτάνει το 1 ακριβώς πάνω του, δηλαδή η καμπύλη θα περνούσε από το σημείο ελέγχου της. Με τρίτη επανάληψη (πολλαπλότητα p+1 = 3) η βάση γίνεται C⁻¹: εκεί σταματά η καμπύλη και αρχίζει η γωνία. Η λωρίδα κάτω από τον άξονα το γράφει σε κάθε κόμβο, χωρίς να χρειάζεται να μετρήσεις.Write 0 0 0 1 1 2 3 3 3. The knot ξ = 1 now has multiplicity 2, so the continuity there drops from C¹ to C⁰ — and one function reaches 1 exactly on it, meaning the curve would pass through its control point. With a third repeat (multiplicity p+1 = 3) the basis becomes C⁻¹: that is where the curve stops and the corner begins. The strip under the axis says it at every knot, so you never have to count.
  • Ανέβασε τον βαθμό στο ίδιο διάνυσμαRaise the degree on the same vectorΠάτα p = 3 χωρίς να αλλάξεις το Ξ. Το πεδίο συρρικνώνεται από [0, 3] σε [1, 2] και οι συναρτήσεις πέφτουν σε τέσσερις: ένα διάνυσμα είναι δεσμευμένο για έναν βαθμό, γιατί θέλει p+1 επαναλήψεις σε κάθε άκρο. Γι’ αυτό το k-refinement ανεβάζει πρώτα τον βαθμό και βάζει κόμβους μετά — και γι’ αυτό τα κουμπιά που δεν χωράνε στο διάνυσμα σβήνουν μόνα τους.Press p = 3 without touching Ξ. The domain shrinks from [0, 3] to [1, 2] and the functions drop to four: a vector is clamped for one degree, because it needs p+1 repeats at each end. That is why k-refinement raises the degree first and inserts knots after — and why the buttons that do not fit the vector grey themselves out.
  • Και τώρα το βάροςAnd now the weightΣτη θέση (1.5, 0.5) κυριαρχεί η R₃,₂ = 0.375. Σύρε το βάρος της στο 5: ανεβαίνει στο 0.750 — και η διπλανή της R₃,₁ πέφτει από 0.1875 σε 0.075, χωρίς να την αγγίξει κανείς. Ο παρονομαστής είναι κοινός: ένα βάρος δεν είναι τοπικός συντελεστής, είναι αναλογία απέναντι σε όλες τις άλλες. Και το άθροισμα μένει 1.000 — γι’ αυτό η ρητοποίηση δεν χαλάει τίποτα από όσα στηρίζονται σε αυτό.At (1.5, 0.5) the dominant one is R₃,₂ = 0.375. Drag its weight to 5: it climbs to 0.750 — and its neighbour R₃,₁ falls from 0.1875 to 0.075, with nobody touching it. The denominator is shared: a weight is not a local coefficient, it is a ratio against all the others. And the sum stays 1.000 — which is why making the basis rational breaks none of the guarantees that rest on it.

Τίποτα δεν είναι προϋπολογισμένο: η αναδρομή τρέχει σε κάθε καρέ, για κάθε δείγμα και για τους δύο άξονες. Το διάνυσμα δεν κανονικοποιείται στο [0, 1] — ο άξονας γράφει τους αριθμούς που έγραψες. Το πεδίο ορισμού είναι [ξp, ξn] και όχι όλο το διάνυσμα: δοκίμασε το μη δεσμευμένο 0 1 2 3 4 5 6 7 με p = 2 και θα δεις το πεδίο να πιάνει μόνο το [2, 5], όπου και μόνο εκεί οι συναρτήσεις αθροίζουν στη μονάδα. Τα δύο πεδία δέχονται κενά ή κόμματα, ως 14 τιμές, από 0 ως 99, και μπαίνουν με το κουμπί ή με Enter. Πληκτρολόγιο πάνω στην επιφάνεια: βελάκια για περιστροφή.Nothing here is precomputed: the recursion runs on every frame, for every sample, on both axes. The vector is not normalised to [0, 1] — the axis prints the numbers you wrote. The domain is [ξp, ξn], not the whole vector: try the unclamped 0 1 2 3 4 5 6 7 with p = 2 and watch the domain cover only [2, 5], which is exactly where the functions sum to one. Both fields take spaces or commas, up to 14 values, from 0 to 99, and enter the drawing with the button or with Enter. Keyboard on the surface: arrow keys to rotate.

1.3 ΕργαστήριοWorkbench

Η ίδια βάση, με τρίτο άξοναThe same basis, with a third axis

Ένα διάνυσμα παραπάνω, και η επιφάνεια γίνεται στερεό: γράψε Ξ, Η και Ζ με τους βαθμούς τους, και οι τρεις βάσεις NiMjLk δίνουν τις συναρτήσεις σχήματος Ri,j,k(ξ,η,ζ) ενός trivariate NURBS. Η αναδρομή είναι η ίδια — ένας πυρήνας, τρεις άξονες — αλλά δύο πράγματα αλλάζουν: το πλήθος γίνεται n·m·l, και η τιμή χάνει τον άξονά της. One more vector, and the surface becomes a solid: write Ξ, Η and Ζ with their degrees, and the three bases NiMjLk give the shape functions Ri,j,k(ξ,η,ζ) of a trivariate NURBS. The recursion is the same — one core, three axes — but two things change: the count becomes n·m·l, and the value loses its axis.

Cox–de Boor · NURBS 3D p = 2 · q = 2 · r = 2 · ξ = 1.5 · η = 0.5 · ζ = 1

Ni,p(ξ) · άξονας ξthe ξ axis

Ξ ·

Mj,q(η) · άξονας ηthe η axis

Η ·

Lk,r(ζ) · άξονας ζthe ζ axis

Ζ ·

Ri,j,k = NiMjLkwijk / ΣΣΣNMLw · η κυρίαρχη, μέσα στον παραμετρικό κύβοthe dominant one, inside the parametric cube

Σύρε για περιστροφήDrag to rotate

Διάνυσμα ΞKnot vector Ξ n = 5

Διάνυσμα ΗKnot vector Η m = 3

Διάνυσμα ΖKnot vector Ζ l = 4

Θέση ξPosition ξ 1.5

Θέση ηPosition η 0.5

Θέση ζPosition ζ 1

Βάρος τηςWeight of R w = 1.00

Μέσα στον κύβοInside the cube

ΑναδρομήRecursion

ΣυναρτήσειςFunctions
5 × 3 × 4 = 60
Ενεργές εδώNon-zero here
18
ΆθροισμαSum
1.000
ΚυρίαρχηDominant
R₃,₂,₂ = 0.188

οι συναρτήσεις και η τιμή τους — έντονη η κυρίαρχηthe functions and their value — the dominant one in bold ό,τι γράφεις: οι τρεις θέσεις, οι κόμβοι, τα όρια των στοιχείωνwhat you write: the three positions, the knots, the element boundaries

  • Τρία διανύσματα, 60 συναρτήσειςThree vectors, 60 functionsΟι τρεις άξονες ανοίγουν με 5 + 3 + 4 μονοδιάστατες συναρτήσεις — και ο κύβος έχει 5 × 3 × 4 = 60. Ο τανυστής δεν προσθέτει άξονα, τον πολλαπλασιάζει: γράψε 0 0 0 1 2 3 4 5 5 5 και στα τρία πεδία και οι επτά ανά άξονα γίνονται 343, εκεί που δύο άξονες θα έδιναν 49. Αυτός είναι όλος ο λόγος που ένα trivariate patch είναι ακριβό και ένα κέλυφος όχι.The three axes open with 5 + 3 + 4 one-dimensional functions — and the cube has 5 × 3 × 4 = 60. The tensor product does not add an axis, it multiplies it: write 0 0 0 1 2 3 4 5 5 5 into all three fields and seven per axis becomes 343, where two axes would give 49. That is the whole reason a trivariate patch is expensive and a shell is not.
  • Κούνα τη θέση ζMove the ζ positionΑνοίγει ακριβώς πάνω στον κόμβο ζ = 1, εκεί που ο τρίτος άξονας έχει μόνο δύο μη μηδενικές αντί για τρεις: οι ενεργές είναι 18, όχι 27, και η κυρίαρχη πέφτει στο 0.188. Σύρε το ζ στο 0.7 και γίνονται 27 με κυρίαρχη 0.249. Το πολύ (p+1)(q+1)(r+1) — και σε κάθε κόμβο ένας παράγοντας λιγότερος.It opens exactly on the knot ζ = 1, where the third axis has only two non-zero functions instead of three: the active ones are 18, not 27, and the dominant one drops to 0.188. Drag ζ to 0.7 and they become 27 with a dominant of 0.249. At most (p+1)(q+1)(r+1) — and one factor fewer at every knot.
  • Σβήσε τον τρίτο άξοναSwitch the third axis offΓράψε στο Ζ σκέτο 0 1 και πάτα r = 0. Μένει μία συνάρτηση στον ζ, οπότε 5 × 3 × 1 = 15 και η κυρίαρχη ξαναγίνεται 0.375 — δηλαδή ακριβώς το εργαστήριο 1.2, αριθμό προς αριθμό. Το τρισδιάστατο δεν είναι άλλη θεωρία· είναι η ίδια, με έναν παράγοντα που εδώ έγινε μονάδα.Write a bare 0 1 into Ζ and press r = 0. One function is left on ζ, so 5 × 3 × 1 = 15 and the dominant one becomes 0.375 again — which is workbench 1.2 exactly, number for number. Three dimensions are not another theory; they are the same one, with a factor that has turned into unity.
  • Και πάλι το βάροςThe weight, againΣύρε το w της κυρίαρχης στο 5: από 0.188 ανεβαίνει στο 0.536, και η διπλανή της R₂,₂,₂ πέφτει από 0.031 στο 0.018 χωρίς να την αγγίξει κανείς. Ο παρονομαστής είναι ένας αριθμός για ολόκληρο τον κύβο, όχι ένας ανά άξονα — γι’ αυτό οι R δεν είναι γινόμενο τριών μονοδιάστατων ρητών βάσεων. Το άθροισμα μένει 1.000.Drag the dominant one’s w to 5: from 0.188 it climbs to 0.536, and its neighbour R₂,₂,₂ falls from 0.031 to 0.018 with nobody touching it. The denominator is one number for the whole cube, not one per axis — which is why the R are not a product of three one-dimensional rational bases. The sum stays 1.000.
  • Νέφος ή τομήCloud or sectionΗ τιμή δεν έχει πια πού να σταθεί: στο 1.2 το ύψος ήταν η R, εδώ και οι τρεις άξονες είναι παράμετροι. Το νέφος τη γράφει με πυκνότητα, η τομή ζ με χρώμα πάνω σε ένα επίπεδο. Στο άνοιγμα το νέφος γεμίζει ολόκληρο τον κύβο, και σωστά: ο φορέας πιάνει 3 × 3 × 3 στοιχεία, αλλά ο κύβος έχει μόνο 3 × 1 × 2. Γράψε 0 0 0 1 2 3 4 5 5 5 και στα τρία πεδία και το ίδιο νέφος μαζεύεται σε μια γωνία — δεν μίκρυνε ο φορέας, μεγάλωσε ο κύβος γύρω του. Αυτό ακριβώς είναι ο τοπικός φορέας, και είναι ο λόγος που ο πίνακας βγαίνει αραιός.The value has nowhere left to stand: in 1.2 the height was the R, here all three axes are parameters. The cloud writes it as density, the ζ section as colour on one plane. On opening the cloud fills the whole cube, and rightly so: the support spans 3 × 3 × 3 elements, but the cube only has 3 × 1 × 2. Write 0 0 0 1 2 3 4 5 5 5 into all three fields and the same cloud shrinks into one corner — the support did not get smaller, the cube grew around it. That is local support exactly, and it is why the matrix comes out sparse.

Ο πυρήνας είναι ο ίδιος με το 1.2 — μία αναδρομή Cox–de Boor, γραμμένη μία φορά, που τρέχει για τρεις άξονες σε κάθε καρέ. Τα τρία πεδία δέχονται κενά ή κόμματα, ως 14 τιμές, από 0 ως 99, και μπαίνουν με το κουμπί ή με Enter· ο βαθμός που δεν χωράει στο διάνυσμα σβήνει μόνος του (θέλει 2p+2 τιμές). Το πάτωμα του κύβου γράφει τους κόμβους των ξ και η, και κάθε κόμβος του ζ γίνεται ένα πάτωμα παραπάνω — έτσι τα τρία διανύσματα φαίνονται ταυτόχρονα, ως στοιχεία. Πληκτρολόγιο πάνω στον κύβο: βελάκια για περιστροφή.The core is the same as in 1.2 — one Cox–de Boor recursion, written once, running on three axes every frame. The three fields take spaces or commas, up to 14 values, from 0 to 99, and enter with the button or with Enter; a degree that does not fit its vector greys itself out (it needs 2p+2 values). The floor of the cube carries the knots of ξ and η, and every knot of ζ becomes one more floor — so all three vectors are visible at once, as elements. Keyboard on the cube: arrow keys to rotate.

Γιατί υπάρχει το trivariate. Το κέλυφος από πάνω λύνεται με δύο παραμέτρους γιατί το πάχος του δεν είναι άγνωστος — το αναλαμβάνει η θεωρία Kirchhoff–Love. Ένα στερεό δεν έχει αυτή την πολυτέλεια: όταν το σώμα είναι χοντρό, ή όταν σε ενδιαφέρει τι γίνεται μέσα του, θέλεις βάση και στην τρίτη κατεύθυνση — και τότε οι άγνωστοι πολλαπλασιάζονται αντί να προστίθενται. Το εργαστήριο δείχνει ακριβώς αυτό το τίμημα: 5 × 3 × 4 δεν είναι 12, είναι 60. Why trivariate exists. The shell above is solved with two parameters because its thickness is not an unknown — Kirchhoff–Love theory takes care of it. A solid has no such luxury: when the body is thick, or when what happens inside it is the question, you need a basis in the third direction too — and then the unknowns multiply instead of adding. This workbench shows exactly that price: 5 × 3 × 4 is not 12, it is 60.

Τι δεν αλλάζει. Και οι εξήντα συναρτήσεις είναι μη αρνητικές, αθροίζουν παντού στη μονάδα, και σε κάθε θέση είναι το πολύ (p+1)(q+1)(r+1) μη μηδενικές. Οι τρεις εγγυήσεις που κάνουν τη μέθοδο να δουλεύει — αραιός πίνακας, κυρτό περίβλημα, τοπικός φορέας — δεν εξαρτώνται από το πλήθος των διαστάσεων· εξαρτώνται από την ίδια αναδρομή, που δεν άλλαξε ούτε γραμμή για να τρέξει εδώ. Το ίδιο και η ρητοποίηση: το βάρος μετακινεί αναλογίες, όχι αθροίσματα. What does not change. All sixty functions are non-negative, they sum to one everywhere, and at any position at most (p+1)(q+1)(r+1) of them are non-zero. The three guarantees that make the method work — sparse matrix, convex hull, local support — do not depend on how many dimensions there are; they depend on the same recursion, which did not change one line to run here. Nor does making it rational: a weight moves ratios, not sums.

Έχετε γεωμετρία που πρέπει να είναι
και λεία και ελεγχόμενη;
Have geometry that must be both
smooth and controllable?

Πείτε μας τι φτιάχνετε και θα σας πούμε αν η υποδιαίρεση είναι το σωστό εργαλείο — και αν όχι, ποιο είναι.Tell us what you are building and we will tell you whether subdivision is the right tool — and if not, what is.

Ξεκινήστε μια συζήτησηStart a conversation