Contact
Date: 2019-10-22

org.jmol.shapesurface

## Class Contact

- java.lang.Object
- - org.jmol.shape.Shape
  - - org.jmol.shape.MeshCollection
    - - org.jmol.shapesurface.Isosurface
      - - org.jmol.shapesurface.Contact

- All Implemented Interfaces:
    MeshDataServer, VertexDataServer

      public class Contact
      extends Isosurface

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private int` | `ac`
    `protected Atom[]` | `atoms`
    `protected int` | `displayType`
    `private float` | `maxData`
    `private float` | `minData`
    `private javajs.util.P3` | `pt1`
    `private javajs.util.P3` | `pt2`
    `private static RadiusData` | `rdVDW`
    `private javajs.util.V3` | `vX`
    `private javajs.util.V3` | `vY`
    `private javajs.util.V3` | `vZ`

    - ### Fields inherited from class org.jmol.shapesurface.Isosurface

      `allowMesh, iHaveBitSets, isomeshes, jvxlData, keyXy, sg, thisMesh`

    - ### Fields inherited from class org.jmol.shape.MeshCollection

      `bsDisplay, colix, color, connections, currentMesh, displayWithinDistance2, displayWithinPoints, explicitID, htObjects, isDisplayWithinNot, isFixed, linkedMesh, meshCount, meshes, modelIndex, nUnnamed, pickedMesh, pickedModel, pickedPt, pickedVertex, PREVIOUS_MESH_ID, previousMeshID, title`

    - ### Fields inherited from class org.jmol.shape.Shape

      `bsColixSet, bsSizeSet, isBioShape, ms, myType, RADIUS_MAX, shapeID, translucentAllowed, translucentLevel, vf, vwr`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Contact()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `addMeshInfo(IsosurfaceMesh mesh, java.util.Map<java.lang.String,java.lang.Object> info)`
    `private static int` | `checkCp(ContactPair cp1, ContactPair cp2, int i1, int i2)`
    `private float` | `combineSurfaces(javajs.util.Lst<ContactPair> pairs, int contactType, int displayType, float[] parameters, java.lang.Object func, boolean isColorDensity, boolean colorByType)`
    `private javajs.util.Lst<ContactPair>` | `getPairs(javajs.util.BS bsA, javajs.util.BS bsB, RadiusData rd, int intramolecularMode, boolean doEditCpList)`
    `protected java.lang.Object` | `getPropC(java.lang.String property, int index)`
    `java.lang.Object` | `getProperty(java.lang.String property, int index)`
    `private static void` | `getVdwClashRadius(ContactPair cp, double x0, double vdwA, double vdwB, double d)` well, heh, heh...
    `void` | `initShape()`
    `private boolean` | `isWithinFourBonds(Atom atomA, Atom atomB)`
    `private void` | `mergeMesh(MeshData md)`
    `private void` | `newSurface(int displayType, ContactPair cp, javajs.util.BS bs1, javajs.util.BS bs2, RadiusData rd, float[] parameters, java.lang.Object func, boolean isColorDensity, VolumeData volumeData, float sasurfaceRadius)`
    `private int` | `setColorByScore(float score, int nV)`
    `private void` | `setContacts(java.lang.Object[] value, boolean doEditCpList)`
    `void` | `setProperty(java.lang.String propertyName, java.lang.Object value, javajs.util.BS bs)`
    `private void` | `setVolumeData(int type, VolumeData volumeData, ContactPair cp, float resolution, int nPairs)`

    - ### Methods inherited from class org.jmol.shapesurface.Isosurface

      `addRequiredFile, addTriangleCheck, addVertexCopy, allocMesh, calculateGeodesicSurface, checkObjectClicked, checkObjectHovered, clearSg, discardTempData, fillMeshData, getCapSlabInfo, getCmd, getPlane, getPolygonColorData, getPropertyData, getPropI, getShapeDetail, getShapeState, getSurfacePointIndexAndFraction, getValue, invalidateTriangles, newSg, notifySurfaceGenerationCompleted, notifySurfaceMappingCompleted, setOutputChannel, setPropI, setRequiredFile, setScriptInfo, slabPolygons`

    - ### Methods inherited from class org.jmol.shape.MeshCollection

      `checkExplicit, clean, deleteMeshI, deleteMeshKey, getIndexFromName, getMesh, getMeshList, getPickedPoint, getPropDataMC, getPropMC, merge, resetObjects, setModelVisibilityFlags, setPropMC, setStatusPicked, setTokenProperty`

    - ### Methods inherited from class org.jmol.shape.Shape

      `appendCmd, checkBoundsMinMax, checkObjectDragged, coordinateInRange, encodeColor, findNearestAtomIndex, getColix, getColixA, getColixB, getColixI, getColorCommand, getColorCommandUnk, getFontCommand, getPropShape, getSize, getSizeG, getTranslucentLabel, initializeShape, initModelSet, replaceGroup, setAtomClickability, setModelSet, setPropS, setShapeSizeRD, setSize, setSizeRD, wasClicked`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### displayType

          protected int displayType

    - #### atoms

          protected Atom[] atoms

    - #### ac

          private int ac

    - #### minData

          private float minData

    - #### maxData

          private float maxData

    - #### rdVDW

          private static final RadiusData rdVDW

    - #### vZ

          private javajs.util.V3 vZ

    - #### vY

          private javajs.util.V3 vY

    - #### vX

          private javajs.util.V3 vX

    - #### pt1

          private javajs.util.P3 pt1

    - #### pt2

          private javajs.util.P3 pt2

  - ### Constructor Detail

    - #### Contact

          public Contact()

  - ### Method Detail

    - #### initShape

          public void initShape()

      Overrides:
        `initShape` in class `Isosurface`

    - #### getProperty

          public java.lang.Object getProperty(java.lang.String property,
                                              int index)

      Overrides:
        `getProperty` in class `Isosurface`
      Returns:
        true if serviced

    - #### getPropC

          protected java.lang.Object getPropC(java.lang.String property,
                                              int index)

    - #### setProperty

          public void setProperty(java.lang.String propertyName,
                                  java.lang.Object value,
                                  javajs.util.BS bs)

      Overrides:
        `setProperty` in class `Isosurface`

    - #### setContacts

          private void setContacts(java.lang.Object[] value,
                                   boolean doEditCpList)

    - #### combineSurfaces

          private float combineSurfaces(javajs.util.Lst<ContactPair> pairs,
                                        int contactType,
                                        int displayType,
                                        float[] parameters,
                                        java.lang.Object func,
                                        boolean isColorDensity,
                                        boolean colorByType)

      Parameters:
        `pairs` -
        `contactType` -
        `displayType` -
        `parameters` -
        `func` -
        `isColorDensity` -
        `colorByType` -
      Returns:
        volume

    - #### setColorByScore

          private int setColorByScore(float score,
                                      int nV)

    - #### getPairs

          private javajs.util.Lst<ContactPair> getPairs(javajs.util.BS bsA,
                                                        javajs.util.BS bsB,
                                                        RadiusData rd,
                                                        int intramolecularMode,
                                                        boolean doEditCpList)

      Parameters:
        `bsA` -
        `bsB` -
        `rd` -
        `intramolecularMode` -
        `doEditCpList` -
      Returns:
        a list of pairs of atoms to process

    - #### isWithinFourBonds

          private boolean isWithinFourBonds(Atom atomA,
                                            Atom atomB)

    - #### checkCp

          private static int checkCp(ContactPair cp1,
                                     ContactPair cp2,
                                     int i1,
                                     int i2)

      Parameters:
        `cp1` -
        `cp2` -
        `i1` -
        `i2` -
      Returns:
        0 (no clash); 1 (remove #1); 2 (remove #2)

    - #### newSurface

          private void newSurface(int displayType,
                                  ContactPair cp,
                                  javajs.util.BS bs1,
                                  javajs.util.BS bs2,
                                  RadiusData rd,
                                  float[] parameters,
                                  java.lang.Object func,
                                  boolean isColorDensity,
                                  VolumeData volumeData,
                                  float sasurfaceRadius)

    - #### setVolumeData

          private void setVolumeData(int type,
                                     VolumeData volumeData,
                                     ContactPair cp,
                                     float resolution,
                                     int nPairs)

    - #### mergeMesh

          private void mergeMesh(MeshData md)

    - #### addMeshInfo

          protected void addMeshInfo(IsosurfaceMesh mesh,
                                     java.util.Map<java.lang.String,java.lang.Object> info)

      Overrides:
        `addMeshInfo` in class `Isosurface`

    - #### getVdwClashRadius

          private static void getVdwClashRadius(ContactPair cp,
                                                double x0,
                                                double vdwA,
                                                double vdwB,
                                                double d)

      well, heh, heh... This calculates the VDW extension x at a given distance for a clashing pair that will produce a volume that is equivalent to the volume for the vdw contact at the point of touching (d0 = vdwA + vdwB) and the transition to clash. This will provide the surface that will surround the clash until the clash size is larger than it.
      Parameters:
        `cp` -
        `x0` -
        `vdwA` -
        `vdwB` -
        `d` -