The most common support question about any surface plotter is a variant of this: I typed a formula and part of the graph is gone. Sometimes the answer is a domain restriction that is mathematically correct. Sometimes it is a setting. This page walks through the causes in the order worth checking, and explains why this calculator leaves gaps rather than filling them in.
Missing means undefined, not zero
A graphing engine evaluates the formula at every grid point. Some of those evaluations throw, return NaN, or return infinity. This calculator drops those samples and does not build triangles across them. The visible consequence is a hole or a torn edge. An older or simpler renderer might substitute zero, which produces a flat sheet at height zero and a picture that is confidently wrong.
For z = sqrt(x^2 + y^2 - 9) the argument is negative inside the circle of radius 3, so nothing is drawn there and the surface begins exactly at the circle. That boundary is not a rendering artefact; it is the edge of the domain, and it is often the very thing the exercise is asking you to find.
Cause one: the function has a restricted domain
| Function | Fails when | Typical formula |
|---|---|---|
| sqrt(u) | u < 0 | z = sqrt(x^2 + y^2 - 9) |
| log(u) | u <= 0 | z = log(x * y) |
| Division | denominator = 0 | z = 1 / (x^2 + y^2) |
| tan(u) | u = pi/2 + k*pi | z = tan(x) |
| asin(u), acos(u) | |u| > 1 | z = asin(x + y) |
Note the difference between a hole and a spike. A denominator that approaches zero without reaching it produces huge finite values near the origin, so the surface is drawn very tall rather than missing. On a page plotting -6 to 6, a single near-vertical spike can dominate the frame and flatten everything else. The inverse-square example on this site caps its own formula at 4 for exactly that reason, and says so in the page text.
Cause two: the range excludes the feature
The x and y fields define the rectangle that gets sampled. If a ring-shaped valley has its minimum at radius 3 but the range is -2 to 2, the visible surface is only the rising centre and the valley is off-screen. This is not a bug and it is easy to misread as one, because the picture still looks like a complete surface.
The fix is to widen the range and accept coarser sampling, or to change the formula's parameters so the feature moves into view. For periodic surfaces, count the periods you want: sin(x) has a period of 2*pi, so a range of -6.3 to 6.3 shows two full periods and a range of -3 to 3 shows less than one.
Cause three: the vertical scale compresses the shape
When a surface is much taller than its horizontal extent, the view compresses it vertically so it fits the frame. The z-axis labels keep the true values, but small features near zero can become visually indistinguishable from the base plane. If a region looks flat but the labels say otherwise, the shape is there and the projection is hiding it.
Two ways to see it: narrow the z extent by choosing a formula with a smaller range, or reduce the x and y window so the horizontal scale grows relative to the vertical one. Fit view restores a framed picture after any manual zoom, which is often enough to recover a lost sense of scale.
Cause four: the sampling grid skipped the feature
A narrow ridge, a thin well, or a fast oscillation can fall between grid lines. At 56 samples across a range of 16 units, points are about 0.29 units apart; a feature narrower than that can be missed entirely or appear only as a few stray vertices. The grid is fixed per page, so the practical fix is to narrow x and y until several points land inside the feature.
This is the same aliasing problem described in the sampling guide, seen from the other side: instead of a fake smooth pattern, you get a feature that flickers in and out as the grid shifts. If a spike appears at one camera angle and vanishes at another, suspect sampling before suspecting the formula.
Cause five: the browser cannot draw
If the whole canvas is blank rather than partly missing, the likely cause is WebGL. Old browsers, some locked-down school machines, and remote desktops without GPU acceleration cannot create a WebGL context. The calculator detects this and shows an explanatory message instead of an empty box. The remedy is a different browser or device, not a different formula. A blank frame inside an iframe has a separate cause: the embed is sized explicitly and the renderer will not allocate below 320 pixels per side, so a column that squeezes it smaller clips the drawing.
Why a shared link can look different
A share link encodes the whole graph state in the URL fragment, and the calculator validates that state when it loads rather than trusting it. Samples are clamped to the supported 16 to 120 range, ranges are cleaned, and a section plane that falls outside the plotted window is moved back inside it. The camera is dropped when the encoded link would be too long for a chat message or an LMS field.
Those guards are why two people can open the same link and see slightly different pictures. A student who edits the URL by hand, or a messaging client that truncates it, produces a link that restores a valid but different graph. If a shared view does not match what you saw, copy the link again from the calculator rather than editing the one you have, and check that the sample count in the status pill is the number you expected.
The same logic explains a blank canvas inside an embedded frame. The iframe is given an explicit size, and the renderer will not allocate below 320 pixels per side, so a frame squeezed smaller than that by a narrow layout can clip the drawing. Widening the embedding column or choosing a smaller but legal frame size fixes it without touching the formula.
A diagnostic order that works
- Substitute one missing point by hand to see whether the formula is defined there.
- Check the x and y fields. Does the range include the region you expect to see?
- Widen the range once. If the surface appears, the feature was outside the window.
- Narrow the range once. If detail appears, the grid was too coarse for that window.
- Try a simpler formula such as z = x^2 + y^2. If that draws, the renderer is fine and the issue is the formula or the range.
- If nothing draws at all, check for the WebGL message and try another browser.
Five steps, each one cheap. The order matters because it separates mathematical causes from rendering causes before you spend time adjusting settings that were never the problem.