# llGroundNormal

*LSL function*

```lsl
vector vector llGroundNormal(vector offset);
```

- `vector offset`: Offset relative to the prim's position, expressed in local coordinates.

- Returns: `vector`
- Energy: 10

Returns a vector representing the ground surface normal vector directly below the current position offset by the vector offset.

Returns a [vector](https://wiki.secondlife.com/wiki/vector) that is the ground [normal](https://en.wikipedia.org/wiki/Normal_%28geometry%29) from the current [position](/functions/llGetPos/) + **offset**.

```lsl title="How to use" frame="terminal"
vector result = llGroundNormal(ZERO_VECTOR);
```

## Specification

This function is defined as:

```lsl
vector llGroundNormal(vector offset)
{
    vector slope = llGroundSlope(offset);
    return <slope.x, slope.y, 1.0>;
}
```

## Notes

- There seems to some confusion be between a [Surface Normal](http://en.wikipedia.org/wiki/Normal_%28geometry%29) (the direction from the surface) and [Normalized Vector](http://en.wikipedia.org/wiki/Unit_vector) (a vector with a magnitude of 1.0, AKA Unit Vector). This function does **not** return a unit vector. Surface normals may encode additional information in the magnitude of the vector. If you need a Unit Vector, simply use [llVecNorm](/functions/llVecNorm/).

## History

Added in [SL 0.9.0](http://secondlife.wikia.com/wiki/Version_0.9.0)

## See also

### Functions

- [llGround](/functions/llGround/) — Gets the ground height
- [llGroundContour](/functions/llGroundContour/) — Gets the ground contour
- [llGroundSlope](/functions/llGroundSlope/) — Gets the ground slope

---

*Source: [LlGroundNormal](https://wiki.secondlife.com/wiki/LlGroundNormal) on the Second Life Wiki. Content from the Second Life Wiki articles LlGroundNormal (revision 1194294, 2015-01-22) and Template:LSL Function/offset (revision 1169422, 2012-06-18), CC BY-SA 3.0.*

---

From lsl.dev: https://lsl.dev/functions/llGroundNormal/
