All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
LocalCoordinatesSite Class Reference

This is a VirtualSite that uses the locations of three other particles to compute a local coordinate system, then places the virtual site at a fixed location in that coordinate system. More...

`#include <VirtualSite.h>`

Inheritance diagram for LocalCoordinatesSite:

## Public Member Functions

| LocalCoordinatesSite (int particle1, int particle2, int particle3, const Vec3 &originWeights, const Vec3 &xWeights, const Vec3 &yWeights, const Vec3 &localPosition)
| Create a new LocalCoordinatesSite virtual site. More...
const Vec3 & | getOriginWeights () const
| Get the weight factors for the three particles when computing the origin location. More...
const Vec3 & | getXWeights () const
| Get the weight factors for the three particles when computing xdir. More...
const Vec3 & | getYWeights () const
| Get the weight factors for the three particles when computing ydir. More...
const Vec3 & | getLocalPosition () const
| Get the position of the virtual site in the local coordinate system. More...
Public Member Functions inherited from VirtualSite
virtual | ~VirtualSite ()
int | getNumParticles () const
| Get the number of particles this virtual site depends on. More...
int | getParticle (int particle) const
| Get the index of a particle this virtual site depends on. More...

## Additional Inherited Members

Protected Member Functions inherited from VirtualSite
| VirtualSite ()
void | setParticles (const std::vector< int > &particleIndices)

## Detailed Description

This is a VirtualSite that uses the locations of three other particles to compute a local coordinate system, then places the virtual site at a fixed location in that coordinate system.

The origin of the coordinate system and the directions of its x and y axes are each specified as a weighted sum of the locations of the three particles:

origin = wo1r1 + wo2r2 + wo3r3

xdir = wx1r1 + wx2r2 + wx3r3

ydir = wy1r1 + wy2r2 + wy3r3

For the origin, the three weights must add to one. For example if (wo1, wo2, wo3) = (1.0, 0.0, 0.0), the origin of the local coordinate system is at the location of particle 1. For xdir and ydir, the weights must add to zero. For excample, if (wx1, wx2, wx3) = (-1.0, 0.5, 0.5), the x axis points from particle 1 toward the midpoint between particles 2 and 3.

The z direction is computed as zdir = xdir x ydir. To ensure the axes are all orthogonal, ydir is then recomputed as ydir = zdir x xdir. All three axis vectors are then normalized, and the virtual site location is set to

origin + x*xdir + y*ydir + z*zdir

## Constructor & Destructor Documentation

LocalCoordinatesSite | ( | int | particle1,
|  | int | particle2,
|  | int | particle3,
|  | const Vec3 & | originWeights,
|  | const Vec3 & | xWeights,
|  | const Vec3 & | yWeights,
|  | const Vec3 & | localPosition
| ) |  |

Create a new LocalCoordinatesSite virtual site.

Parameters

  particle1 | the index of the first particle
  particle2 | the index of the second particle
  particle3 | the index of the third particle
  originWeights | the weight factors for the three particles when computing the origin location
  xWeights | the weight factors for the three particles when computing xdir
  yWeights | the weight factors for the three particles when computing ydir
  localPosition | the position of the virtual site in the local coordinate system

## Member Function Documentation

const Vec3& getLocalPosition | ( |  | ) | const

Get the position of the virtual site in the local coordinate system.

const Vec3& getOriginWeights | ( |  | ) | const

Get the weight factors for the three particles when computing the origin location.

const Vec3& getXWeights | ( |  | ) | const

Get the weight factors for the three particles when computing xdir.

const Vec3& getYWeights | ( |  | ) | const

Get the weight factors for the three particles when computing ydir.

The documentation for this class was generated from the following file:

- VirtualSite.h