public static final class Quaternion.Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Quaternion.Builder> implements QuaternionOrBuilder
A quaternion is defined as the quotient of two directed lines in a
three-dimensional space or equivalently as the quotient of two Euclidean
vectors (https://en.wikipedia.org/wiki/Quaternion).
Quaternions are often used in calculations involving three-dimensional
rotations (https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation),
as they provide greater mathematical robustness by avoiding the gimbal lock
problems that can be encountered when using Euler angles
(https://en.wikipedia.org/wiki/Gimbal_lock).
Quaternions are generally represented in this form:
w + xi + yj + zk
where x, y, z, and w are real numbers, and i, j, and k are three imaginary
numbers.
Our naming choice `(x, y, z, w)` comes from the desire to avoid confusion for
those interested in the geometric properties of the quaternion in the 3D
Cartesian space. Other texts often use alternative names or subscripts, such
as `(a, b, c, d)`, `(1, i, j, k)`, or `(0, 1, 2, 3)`, which are perhaps
better suited for mathematical interpretations.
To avoid any confusion, as well as to maintain compatibility with a large
number of software libraries, the quaternions represented using the protocol
buffer below *must* follow the Hamilton convention, which defines `ij = k`
(i.e. a right-handed algebra), and therefore:
i^2 = j^2 = k^2 = ijk = −1
ij = −ji = k
jk = −kj = i
ki = −ik = j
Please DO NOT use this to represent quaternions that follow the JPL
convention, or any of the other quaternion flavors out there.
Definitions:
- Quaternion norm (or magnitude): `sqrt(x^2 + y^2 + z^2 + w^2)`.
- Unit (or normalized) quaternion: a quaternion whose norm is 1.
- Pure quaternion: a quaternion whose scalar component (`w`) is 0.
- Rotation quaternion: a unit quaternion used to represent rotation.
- Orientation quaternion: a unit quaternion used to represent orientation.
A quaternion can be normalized by dividing it by its norm. The resulting
quaternion maintains the same direction, but has a norm of 1, i.e. it moves
on the unit sphere. This is generally necessary for rotation and orientation
quaternions, to avoid rounding errors:
https://en.wikipedia.org/wiki/Rotation_formalisms_in_three_dimensions
Note that `(x, y, z, w)` and `(-x, -y, -z, -w)` represent the same rotation,
but normalization would be even more useful, e.g. for comparison purposes, if
it would produce a unique representation. It is thus recommended that `w` be
kept positive, which can be achieved by changing all the signs when `w` is
negative.
Protobuf type google.type.Quaternion| Modifier and Type | Method and Description |
|---|---|
Quaternion.Builder |
addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field,
Object value) |
Quaternion |
build() |
Quaternion |
buildPartial() |
Quaternion.Builder |
clear() |
Quaternion.Builder |
clearField(com.google.protobuf.Descriptors.FieldDescriptor field) |
Quaternion.Builder |
clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) |
Quaternion.Builder |
clearW()
The scalar component.
|
Quaternion.Builder |
clearX()
The x component.
|
Quaternion.Builder |
clearY()
The y component.
|
Quaternion.Builder |
clearZ()
The z component.
|
Quaternion.Builder |
clone() |
Quaternion |
getDefaultInstanceForType() |
static com.google.protobuf.Descriptors.Descriptor |
getDescriptor() |
com.google.protobuf.Descriptors.Descriptor |
getDescriptorForType() |
double |
getW()
The scalar component.
|
double |
getX()
The x component.
|
double |
getY()
The y component.
|
double |
getZ()
The z component.
|
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable |
internalGetFieldAccessorTable() |
boolean |
isInitialized() |
Quaternion.Builder |
mergeFrom(com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
Quaternion.Builder |
mergeFrom(com.google.protobuf.Message other) |
Quaternion.Builder |
mergeFrom(Quaternion other) |
Quaternion.Builder |
mergeUnknownFields(com.google.protobuf.UnknownFieldSet unknownFields) |
Quaternion.Builder |
setField(com.google.protobuf.Descriptors.FieldDescriptor field,
Object value) |
Quaternion.Builder |
setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field,
int index,
Object value) |
Quaternion.Builder |
setUnknownFields(com.google.protobuf.UnknownFieldSet unknownFields) |
Quaternion.Builder |
setW(double value)
The scalar component.
|
Quaternion.Builder |
setX(double value)
The x component.
|
Quaternion.Builder |
setY(double value)
The y component.
|
Quaternion.Builder |
setZ(double value)
The z component.
|
getAllFields, getField, getFieldBuilder, getOneofFieldDescriptor, getParentForChildren, getRepeatedField, getRepeatedFieldBuilder, getRepeatedFieldCount, getUnknownFields, hasField, hasOneof, internalGetMapField, internalGetMutableMapField, isClean, markClean, newBuilderForField, onBuilt, onChanged, setUnknownFieldsProto3findInitializationErrors, getInitializationErrorString, internalMergeFrom, mergeDelimitedFrom, mergeDelimitedFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, newUninitializedMessageException, toStringaddAll, addAll, mergeFrom, newUninitializedMessageExceptionequals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitpublic static final com.google.protobuf.Descriptors.Descriptor getDescriptor()
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()
internalGetFieldAccessorTable in class com.google.protobuf.GeneratedMessageV3.Builder<Quaternion.Builder>public Quaternion.Builder clear()
clear in interface com.google.protobuf.Message.Builderclear in interface com.google.protobuf.MessageLite.Builderclear in class com.google.protobuf.GeneratedMessageV3.Builder<Quaternion.Builder>public com.google.protobuf.Descriptors.Descriptor getDescriptorForType()
getDescriptorForType in interface com.google.protobuf.Message.BuildergetDescriptorForType in interface com.google.protobuf.MessageOrBuildergetDescriptorForType in class com.google.protobuf.GeneratedMessageV3.Builder<Quaternion.Builder>public Quaternion getDefaultInstanceForType()
getDefaultInstanceForType in interface com.google.protobuf.MessageLiteOrBuildergetDefaultInstanceForType in interface com.google.protobuf.MessageOrBuilderpublic Quaternion build()
build in interface com.google.protobuf.Message.Builderbuild in interface com.google.protobuf.MessageLite.Builderpublic Quaternion buildPartial()
buildPartial in interface com.google.protobuf.Message.BuilderbuildPartial in interface com.google.protobuf.MessageLite.Builderpublic Quaternion.Builder clone()
clone in interface com.google.protobuf.Message.Builderclone in interface com.google.protobuf.MessageLite.Builderclone in class com.google.protobuf.GeneratedMessageV3.Builder<Quaternion.Builder>public Quaternion.Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, Object value)
setField in interface com.google.protobuf.Message.BuildersetField in class com.google.protobuf.GeneratedMessageV3.Builder<Quaternion.Builder>public Quaternion.Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field)
clearField in interface com.google.protobuf.Message.BuilderclearField in class com.google.protobuf.GeneratedMessageV3.Builder<Quaternion.Builder>public Quaternion.Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof)
clearOneof in interface com.google.protobuf.Message.BuilderclearOneof in class com.google.protobuf.GeneratedMessageV3.Builder<Quaternion.Builder>public Quaternion.Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, Object value)
setRepeatedField in interface com.google.protobuf.Message.BuildersetRepeatedField in class com.google.protobuf.GeneratedMessageV3.Builder<Quaternion.Builder>public Quaternion.Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, Object value)
addRepeatedField in interface com.google.protobuf.Message.BuilderaddRepeatedField in class com.google.protobuf.GeneratedMessageV3.Builder<Quaternion.Builder>public Quaternion.Builder mergeFrom(com.google.protobuf.Message other)
mergeFrom in interface com.google.protobuf.Message.BuildermergeFrom in class com.google.protobuf.AbstractMessage.Builder<Quaternion.Builder>public Quaternion.Builder mergeFrom(Quaternion other)
public final boolean isInitialized()
isInitialized in interface com.google.protobuf.MessageLiteOrBuilderisInitialized in class com.google.protobuf.GeneratedMessageV3.Builder<Quaternion.Builder>public Quaternion.Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
mergeFrom in interface com.google.protobuf.Message.BuildermergeFrom in interface com.google.protobuf.MessageLite.BuildermergeFrom in class com.google.protobuf.AbstractMessage.Builder<Quaternion.Builder>IOExceptionpublic double getX()
The x component.
double x = 1;getX in interface QuaternionOrBuilderpublic Quaternion.Builder setX(double value)
The x component.
double x = 1;value - The x to set.public Quaternion.Builder clearX()
The x component.
double x = 1;public double getY()
The y component.
double y = 2;getY in interface QuaternionOrBuilderpublic Quaternion.Builder setY(double value)
The y component.
double y = 2;value - The y to set.public Quaternion.Builder clearY()
The y component.
double y = 2;public double getZ()
The z component.
double z = 3;getZ in interface QuaternionOrBuilderpublic Quaternion.Builder setZ(double value)
The z component.
double z = 3;value - The z to set.public Quaternion.Builder clearZ()
The z component.
double z = 3;public double getW()
The scalar component.
double w = 4;getW in interface QuaternionOrBuilderpublic Quaternion.Builder setW(double value)
The scalar component.
double w = 4;value - The w to set.public Quaternion.Builder clearW()
The scalar component.
double w = 4;public final Quaternion.Builder setUnknownFields(com.google.protobuf.UnknownFieldSet unknownFields)
setUnknownFields in interface com.google.protobuf.Message.BuildersetUnknownFields in class com.google.protobuf.GeneratedMessageV3.Builder<Quaternion.Builder>public final Quaternion.Builder mergeUnknownFields(com.google.protobuf.UnknownFieldSet unknownFields)
mergeUnknownFields in interface com.google.protobuf.Message.BuildermergeUnknownFields in class com.google.protobuf.GeneratedMessageV3.Builder<Quaternion.Builder>Copyright © 2021 Google LLC. All rights reserved.