[HN Gopher] G0-G3 corners, visualised: learn what "Apple corners...
___________________________________________________________________
G0-G3 corners, visualised: learn what "Apple corners" are
Author : dgroshev
Score : 123 points
Date : 2025-11-23 18:16 UTC (4 days ago)
(HTM) web link (www.printables.com)
(TXT) w3m dump (www.printables.com)
| LiamPowell wrote:
| These corners are so close that they're going to have no
| practical difference when 3D printing them, the maximum deviation
| between G1 and G3 is only 0.1mm. You need to exaggerate the
| effect much more to show the difference.
|
| > G3 continuous corners mean that the print head experiences
| smooth acceleration while printing such corners.
|
| Axial acceleration is the key here, not just acceleration, that
| however does not matter if the controller does not output
| feedrate profiles with smooth acceleration to go along with it.
| ricardobeat wrote:
| > the maximum deviation between G1 and G3 is only 0.1mm
|
| In a small 100x100mm box, with a 12mm fillet, G1/G2/G3 corners
| already have a visible 0.5mm difference. What gives it away is
| the lack of a hard transition between the flat surface and the
| corner, that's very noticeable on a reflective surface.
|
| On the mechanical side, I think the effect they refer to also
| comes down to that transition line - going from a straight line
| immediately into a curve (G1) which adds lateral forces, vs
| easing into that curve over a few more steps which avoids
| jerking the print head.
| LiamPowell wrote:
| I may have measured incorrectly in the provided model then.
| That's still pushing things at 3D printer scales, especially
| when you don't have a polished surface. I also think an
| internal corner might be more noticeable by feel.
| anamexis wrote:
| > That's still pushing things at 3D printer scales
|
| Consumer FDM 3D printers have an XY positional resolution
| on the order of 0.01 mm.
| kergonath wrote:
| > the maximum deviation between G1 and G3 is only 0.1mm. You
| need to exaggerate the effect much more to show the difference.
|
| Even if the difference is small, it can be very visible because
| of how light is scattered on the surface. This causes visible
| transitions when the splines intersect the sides. Depending on
| what you do, it might or might not matter, but there is a
| visible difference.
|
| I cannot test, but I would think that it would also be felt
| with the fingers. Of course, it matters only if the surface is
| smooth enough in the first place.
| baq wrote:
| > be felt with the fingers
|
| reminded me of https://en.wikipedia.org/wiki/Achim_Leistner
| kergonath wrote:
| Very interesting, thanks for the link!
| dgroshev wrote:
| It seems small in absolute terms, but it's suprisingly visible,
| even to "normal" people, which was the entire point of making a
| physical object!
|
| I gave that object to a dozen people without explanation. Only
| one of them was a designer. All of them preferred G3 after
| comparing corners by look and touch for a few seconds.
| Honestly, I was surprised that it was this unanimous; I
| deliberately made the difference small.
| ZiiS wrote:
| I wanted to play with this in OpenSCAD; here is G1 vs G2
| include <BOSL2/nurbs.scad> $fn=16; back(400)
| cuboid([200,200,100],rounding=50,edges="Z");
| pts=subdivide_path(square([200,200],center=true),8);
| linear_extrude(100)
| polygon(nurbs_curve(pts,2,splinesteps=$fn/4,type="closed"));
| EZ-E wrote:
| I thought this was going to talk about all the competing,
| different corners radiuses on MacOS windows
|
| (is plural of radius radiuses? or radii?)
| ZiiS wrote:
| I am sure we can now obsess over their different continuities
| as well as radii. (Either is fine)
| atoav wrote:
| As someone who modeled surfaces like this for a living:
| G0 Positional Continuity: The surfaces touch without gap, but
| there may be a sharp corner. Example: the corners of a cube
| G1 Tangential Continuity: G0 but additionally the surfaces have
| the same slope (are tangential) at the point where they touch.
| Example: adding a circular fillet to the corners of a cube
|
| This is where most basic CAD modellers would stop. The problem
| with just putting a cylindrical or a spherical fillet in a corner
| is that you basically go from a flat surface (zero curvature) to
| a surface with some curvature on a whim. If your surface is
| reflective that means you go from a flat mirror to a strongly
| distorting one instantly, this will visually appear as a edge
| even if there is none. Curvature btw. is just the reciprocal of
| radius (1/r)
|
| If we talk about forces (e.g. imagine a skateboard ramp) you go
| flat (no centripetal force) to circular (constant centripetal
| force) without any transition inbetween. In effect this will feel
| like a bump that can throw inexperienced skateboarders of their
| feet.
|
| This means tangential transitions often do not cut it.
| G2 Continuity: In addition to being G0 and G1 you additionally
| ensure the curvature is the same where both surfaces meet. This
| usually means instead of going from a flat surface into a circle
| you go into a curve that starta out flat and then bends slowly
| into a radius.
|
| Now the curvature of a curve can be drawn as a curvature comb.
| You basically take the curvature at any point of the curve and
| draw the value as the length of a line that is perpendicular to
| the curve.
|
| G1 is if the perpendicular lines at the ends of the two curves
| align. G2 is if the curvature comb at the end of the two lines
| additionally has the same height (indicating the same curvature
| at the transition point).
|
| G3 is basically just ensuring that the two curvature combs are
| tangential at the point where they meet. G4 is ensuring that the
| curvature combs are not only tangential, but have the same
| curvature. G5 is taking the curvature of the curvature...
|
| By this point you may be able to sense a pattern.
| baq wrote:
| sounds like every step needs one more derivative to be
| continuous...?
| spookie wrote:
| Exactly.
| atoav wrote:
| I thought about talking about derivatives but wanted to avoid
| to mention to many unexplained words, but yes, derivatives
| are exactly the way you should be thinking about this.
|
| In physics/mechanical engineering they have even names for
| these derivatives when we talk about motion (in this order):
| position velocity acceleration jerk
| snap crackle pop
|
| Also see: https://en.wikipedia.org/wiki/Jerk_%28physics%29
| kuschku wrote:
| This same effect also shows up in other fields:
|
| - Why roller coaster loops aren't circular
| https://www.youtube.com/watch?v=3Kzl2suBE2w - Highway
| Engineering: Track transition curve
| https://en.wikipedia.org/wiki/Track_transition_curve
| javawizard wrote:
| Well now I'm curious: what's the limit of G<n> as <n> goes to
| infinity?
|
| A truncated sine wave? (insofar as sine waves are their own
| derivative, shifted by 90 degrees, so if I'm doing my math
| right they would theoretically be G[?]-continuous)
| LegionMammal978 wrote:
| Things like bump functions [0] would generally do the trick.
|
| [0] https://en.wikipedia.org/wiki/Bump_function
| ricardobeat wrote:
| One thing they don't mention is that smooth G2/G3 corners will
| print horribly (with FDM) if added to vertical corners, there
| just aren't enough layers even with a 0.2mm nozzle. You can see
| they use a straight chamfer on the example piece.
|
| While dreaming up Apple-like objects I quickly discovered
| 3D-printing them with good surface finish is nearly impossible.
| Best we can do is Mac mini-like flat tops. Like most other
| manufacturing methods, its limitations heavily influence the
| design.
| Someone wrote:
| Apple is 3D-printing Apple-like objects
| (https://www.apple.com/newsroom/2025/11/mapping-the-future-
| wi...), so one can hope this will trickle-down to hobbyist
| price points some time in the future.
| supermatt wrote:
| There was a kickstarter for a $3000 SLS printer a while ago.
| Formlabs (who have over 50% of the SLS market) promptly
| bought the company and shut down the kickstarter - and gave
| backers a $1000 coupon towards their $30000 SLS printers...
| javawizard wrote:
| That pissed me off so much.
|
| I was one of the backers and I was sooooo looking forward
| to an affordable home SLS printer. They'd done some
| incredible engineering, too, in service of getting the
| price point down to where it was.
|
| Scaling up was going to be a massive challenge for them,
| but damn, I wish they'd tried instead of phoning it in
| early.
|
| (Mind you, I'm sure Formlabs paid them handsomely. Would I
| make the same decision under the same circumstances? I
| honestly don't know. So far be it from me to judge them,
| but man do I wish someone would do something about
| Formlabs' ridiculous prices and monopoly over that space.)
| hobofan wrote:
| > I wish they'd tried
|
| I'm sure they've tried. From what I recall they've had
| serious reliability issues on the preview units. So I'd
| be skeptical if it would have even turned into a
| successfully delivered Kickstarter. They would have to
| deliver on that first before even concerning themselves
| with how to scale up.
|
| So maybe they didn't even get handsomely paid in the
| acquisition, but were given an option to save face.
| VBprogrammer wrote:
| Working within the limitations of a medium is a skill as old
| as time. Often work arounds for the limitations become design
| features that people come to expect. 3d prints typically use
| more chamfers than fillets for exactly this reason.
|
| Most of the hobby grade printers are FDM, it's unlikely we'll
| evolve beyond the limitations of layer lines being a few
| tenths of a mm. UV resin printers however aren't ridiculously
| expensive and they have small enough layers that it's
| completely doable.
| exasperaited wrote:
| Well, you can certainly FDM print layers below one tenth of
| a millimetre tall even with a 0.2mm nozzle, and stagger
| horizontal edges the same. The problem is the time cost of
| doing so with a large object. Even variable layer height
| burns through a lot of time. There is some work being done
| with variable layer heights on outer perimeters only so we
| may get some significant improvements in the future.
|
| I just wish people would, as you are saying, work with and
| accept the inherent qualities of the medium rather than
| doing insane, foolish stuff like using carbon-fibre-filled
| filaments for surface finish.
| wongarsu wrote:
| And you still get something pretty apple-like if you use
| large fillets for anything that follows the layer lines and
| small chamfers for any corner that doesn't. Maybe not
| Macbook-like, but certainly Mac-Mini-like. And if that's
| not good enough there's always the option of spending time
| with filler and sandpaper. There are few fabrication
| methods that get perfect looking results without some
| dedication to post-processing. With UV resin printers you
| just trade the sanding for washing and curing (a really
| good trade if you need tiny details, but still)
| kergonath wrote:
| Each method has its limitations. The technique they use
| (melting powder with lasers) is completely different to what
| people typically do at home (using either photosensitive
| resin or filaments).
| dgroshev wrote:
| I mostly agree, but it also depends on the size and the shape
| of the fillet. Large sweeping curves that stay close to
| horizontal for a long distance are bad, but a tight corner can
| still look better in G2/G3 than just G1. On the top at least,
| because fillets on the bottom create sharp overhangs that don't
| print well.
|
| Also, if you have that option, filler + sanding + paint can
| hide the layers completely, but preserve the overall shape.
| d--b wrote:
| This is also what's happening in an elevator. You not only want
| the speed to increase slowly, you also want the acceleration to
| increase slowly, cause that's what actually makes your guts go
| down. And the best way to do this is to have the acceleration of
| the acceleration continuous.
|
| In the end the position of the elevator is 3-continuous (why is
| it called G3? in France we call this C3). And the apple corner is
| just a graph of the position of an elevator wrt time. Mind
| blowing
| LiamPowell wrote:
| G and C continuity have slightly different meanings. You can
| have curves that are G^n but not C^n and vice-versa. I'll leave
| it to you to find a maths textbook that gives a better
| explanation than I would if I attempted to here.
| andrewingram wrote:
| I'm always reminded of snap, crackle and pop (https://en.wikipe
| dia.org/wiki/Fourth,_fifth,_and_sixth_deriv...) for this topic.
| Essentially it's not enough to just have continuous
| acceleration, you have to ease into it (low snap), you can
| probably go into further derivatives for ultra smoothness but
| maybe not worth it?
| quietbritishjim wrote:
| As your link says, acceleration is 2nd derivative of
| position, so rate of change of acceleration is 3rd
| derivative, often called jolt. As you say, you want
| acceleration to vary slowly, so it's low jolt that you want.
|
| Snap (or jounce), crackle and pop are 4th/5th/6th derivative.
| They're probably less of a problem.
| nkrisc wrote:
| I've also heard it called "jerk".
| andrewingram wrote:
| Oops, yeah you're right!
| rcxdude wrote:
| It can help because the higher derivatives also tend to
| promote vibrations in the system, but I doubt it'd be
| perceptible by people. I have heard of 5th-order smooth
| curves being used for very sensitive structures, like the
| movement of big observatory telescopes.
| oasisaimlessly wrote:
| G^n curvature solely depends on the geometry of the curve,
| while C^n continuity also depends on how you parameterize the
| curve. So, G^n is what you want if you're talking about a
| purely geometric shape rather than an (x(t), y(t)) trajectory.
|
| * reference: section 2.1 of
| https://graphics.stanford.edu/courses/cs348a-21-winter/Reade...
| junon wrote:
| If anyone wants a good primer into curves, Freya Holmer has an
| amazing deep dive into continuity.
|
| https://youtu.be/jvPPXbo87ds?si=7IbeklF4p9qg1F6X
| dgroshev wrote:
| It's a lovely video! I linked it in the description, and I
| strongly recommend the other videos too.
| KeplerBoy wrote:
| Such a shame Freya doesn't seem to post regularly anywhere
| these days. I miss her tweets.
| kurishutofu wrote:
| I think she is active on bluesky
| gpm wrote:
| She is, but I think her work results in less pretty tweets
| these days.
| mcphage wrote:
| I dunno, she tweeted (skeeted?) out something recently
| with position & rotation splines that was pretty cool.
| pschastain wrote:
| https://bsky.app/profile/freya.bsky.social
| rozab wrote:
| I think she's in the mines working on her Blender/Maya
| alternative, Half Edge.
|
| https://half-edge.handmade.network/
| adgjlsfhk1 wrote:
| going up against Blender seems really tough.
| owobeid wrote:
| Are there good ways of achieving this in tools like Blender and
| Illustrator? My best result so far in Illustrator was to round
| corners first and then apply a small amount of smooth but it
| looks a bit wonky.
| WillAdams wrote:
| It should work to drag the off-curve nodes so that they touch
| where the corner would be if the rounded rect was a
| square/rectangle.
| fennecfoxy wrote:
| It's just a corner with a huge radius...idk why the cult has
| suddenly attributed this to Apple. Perhaps because of the
| ridiculous court case.
| echoangle wrote:
| No, it's not a circular shape, that's the entire point of the
| article.
| jdiff wrote:
| This is an article about continuity, not corners. I mean it is
| about corners, but not ones with huge radii.
| aziaziazi wrote:
| This page has images that clarify the subject:
| https://help.autodesk.com/view/ALIAS/2024/ENU/?guid=continui...
| crazygringo wrote:
| Thank you, this is so much more helpful if you don't want to
| watch videos.
| manoDev wrote:
| I remember reading somewhere that these curves were based on the
| curves that naturally occur on smooth pebbles due to the abrasion
| of water, but can't find a link now (searching "apple" and
| "pebble" only gives me results about the smartwatch)
| nusl wrote:
| Maybe from here?
|
| https://www.figma.com/blog/desperately-seeking-squircles/
| manoDev wrote:
| Maybe!
|
| > a squircle doesn't look like a square with surgery
| performed on it; it registers as an entity in its own right,
| like the shape of a smooth pebble in a riverbed, a unified
| and elemental whole.
|
| But I seem to remember reading about Jobs or maybe Ive
| stating smooth pebbles as a source of inspiration for how
| objects should feel in the hand - I believe it was in the
| context of the first iPhone shape.
| sfpotter wrote:
| One interesting and sort of unhappy artifact of CAD is the
| adoption of B-splines and NURBS as the primal basis for modeling.
| The whole point of B-splines is that they are the obvious basis
| for maximally continuous splines of a certain degree (i.e.,
| degree n gives C^{n-1}). This is much more than G continuity. But
| in CAD, it's often the case that all you care about _is_ just G
| continuity.
|
| So you run into a weird situation where CAD software may pass
| around NURBS or B-splines with multiply inserted (or even fully
| inserted) knots, seriously reducing the need for using splines in
| the first place.
|
| The problem is that splines are a really inconvenient and even
| unstable basis for doing numerical work... which is what all of
| CAD is.
| tobr wrote:
| Curious, is there some alternative that would give you both
| higher order continuity and numerical stability? Or are they
| fundamentally at odds?
| sfpotter wrote:
| IMO, higher order continuity is a red herring. You can make
| something approximately high order continuous (say, to 10+
| digits, or whatever you like) piecewise much more easily than
| enforcing mathematically exact high order continuity. Once
| you think of continuity as something to achieve
| approximately, standard methods from classical approximation
| theory suffice.
| Duanemclemore wrote:
| Rhino3d [0] is one of the state-of-the-art programs (along with
| Alias) for the drawing of nurbs and modeling with them. The
| result is the industry standard "Class A" surfaces. Rhino has
| amazing "BlendCrv" and "BlendSrf" commands that allow you to
| combine curvatures between the two curves / surfaces being
| blended. EG, you can interactively choose G0 at one side and G3
| at the other, etc.
|
| Rhino also has really nice and performant curvature analysis
| tools, and a whole host of other tools for implementing Nurbs.
|
| Alias is at least $5,000 / year per seat. Rhino is $995 for a
| perpetual license, with new versions coming out every 2.5 - 3
| years and significant functionality upgrades each time.
|
| McNeel also maintains OpenNurbs [1], an open source library [2]
| for the construction and use of Nurbs. This powers Rhino of
| course and is used in other software. I'm still waiting for
| someone to implement OpenNurbs natively and robustly on Linux.
| But I like the Rhino platform and McNeel as a company so much
| that I run it using wine.
|
| [0] https://www.rhino3d.com/ Developed by McNeel Software [1]
| https://www.rhino3d.com/features/developer/opennurbs/ [2]
| https://github.com/mcneel/opennurbs
| sfpotter wrote:
| FYI: OpenNURBS runs fine on Linux, and is actually only
| supposed to be an (the) open source implementation of Rhino's
| .3dm file format. It is stripped of much of the functionality
| required of a full fledged CAD kernel (the rest is proprietary
| and included in Rhino proper).
___________________________________________________________________
(page generated 2025-11-27 23:01 UTC)