---
name: "SoCoordinate4"
section: "3iv"
platform: "linux"
package: "inventor-doc"
version: "2.1.6+ds-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SoCoordinate4/3iv"
---

# SoCoordinate4(3iv)

rational coordinate point node

## NAME

SoCoordinate4 — rational coordinate point node

## INHERITS FROM

SoBase \> SoFieldContainer \> SoNode \> SoCoordinate4

## SYNOPSIS

**#include \<Inventor/nodes/SoCoordinate4.h\>**

Fields from class SoCoordinate4:

**SoMFVec4f**	**point**

Methods from class SoCoordinate4:

	**SoCoordinate4()**\
 **static SoType**	**getClassTypeId()**

Methods from class SoNode:

**void**	**setOverride(SbBool state)**\
 **SbBool**	**isOverride() const**\
 **SoNode \***	**copy(SbBool copyConnections = FALSE) const**\
 **virtual SbBool**	**affectsState() const**\
 **static SoNode \***	**getByName(const SbName &name)**\
 **static int**	**getByName(const SbName &name, SoNodeList &list)**

Methods from class SoFieldContainer:

**void**	**setToDefaults()**\
 **SbBool**	**hasDefaultValues() const**\
 **SbBool**	**fieldsAreEqual(const SoFieldContainer \*fc) const**\
 **void**	**copyFieldValues(const SoFieldContainer \*fc, SbBool copyConnections = FALSE)**\
 **SbBool**	**set(const char \*fieldDataString)**\
 **void**	**get(SbString &fieldDataString)**\
 **virtual int**	**getFields(SoFieldList &resultList) const**\
 **virtual SoField \***	**getField(const SbName &fieldName) const**\
 **SbBool**	**getFieldName(const SoField \*field, SbName &fieldName) const**\
 **SbBool**	**isNotifyEnabled() const**\
 **SbBool**	**enableNotify(SbBool flag)**

Methods from class SoBase:

**void**	**ref()**\
 **void**	**unref() const**\
 **void**	**unrefNoDelete() const**\
 **void**	**touch()**\
 **virtual SoType**	**getTypeId() const**\
 **SbBool**	**isOfType(SoType type) const**\
 **virtual void**	**setName(const SbName &name)**\
 **virtual SbName**	**getName() const**

## DESCRIPTION

**This node defines a set of 3D coordinates to be used by subsequent vertex-based shape nodes (those derived from SoVertexShape**) or shape nodes that use them as control points (such as NURBS curves and surfaces). Coordinates are specifed as rational 4-vectors; the corresponding 3D point is computed by dividing the first three components by the fourth. This node does not produce a visible result during rendering; it simply replaces the current coordinates in the rendering state for subsequent nodes to use.

This node exists primarily for use with NURBS curves and surfaces. However, it can be used to define coordinates for any vertex-based shape.

## FIELDS

**SoMFVec4f**	**point**\
 Coordinate point(s).

## METHODS

	**SoCoordinate4()**\
 Creates a coordinate node with default settings.

**static SoType**	**getClassTypeId()**\
 Returns type identifier for this class.

## ACTION BEHAVIOR

**SoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickAction**\
 Sets coordinates in current traversal state.

## FILE FORMAT/DEFAULTS

```
Coordinate4 {
point	0 0 0 1
}
```

## SEE ALSO

**SoCoordinate4, SoIndexedNurbsCurve, SoIndexedNurbsSurface, SoNurbsCurve, SoNurbsProfile, SoNurbsSurface, SoVertexShape**
