Package net.sourceforge.jiu.geometry

# Class Shear

java.lang.Object
net.sourceforge.jiu.ops.Operation
net.sourceforge.jiu.ops.ImageToImageOperation
net.sourceforge.jiu.geometry.Shear

public class Shear extends ImageToImageOperation
Shears an image by a given angle. The angle must be larger than -90 and smaller than 90 degrees. Shearing works with all image types that implement `IntegerImage`.

### Usage example

     Shear shear = new Shear();
     shear.setInputImage(image); // some IntegerImage
     shear.setAngle(5.0);
     shear.process();
     PixelImage shearedImage = shear.getOutputImage();

This is an adjusted version of Jef Poskanzer's shearing code from his ACME package; see the API documentation page of ACME's Shear class.

Author:
  Jef Poskanzer, Marco Schmidt

## Field Summary

Fields
Modifier and Type
Field
Description
`private double`
`angle`

## Constructor Summary

Constructors
Constructor
Description
`Shear()`

## Method Summary

Modifier and Type
Method
Description
`static int`
`computeNewImageWidth(int oldImageWidth, int height, double angle)`
For a given image width and shearing angle this method computes the width of the resulting image.
`double`
`getAngle()`
Returns the angle associated with this shearing operation object.
`void`
`process()`
This method does the actual work of the operation.
`private void`
`process(IntegerImage in, IntegerImage out)`
`void`
`setAngle(double newAngle)`
Sets the angle to be used in the shearing operation to the argument value.

### Methods inherited from class net.sourceforge.jiu.ops.ImageToImageOperation

`canInputAndOutputBeEqual, ensureImagesHaveSameResolution, ensureInputImageIsAvailable, ensureOutputImageResolution, getInputImage, getOutputImage, setCanInputAndOutputBeEqual, setInputImage, setOutputImage`

### Methods inherited from class net.sourceforge.jiu.ops.Operation

`addProgressListener, addProgressListeners, getAbort, removeProgressListener, setAbort, setProgress, setProgress`

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

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

## Field Details

### angle

private double angle

## Constructor Details

### Shear

public Shear()

## Method Details

### computeNewImageWidth

public static int computeNewImageWidth(int oldImageWidth, int height, double angle)
For a given image width and shearing angle this method computes the width of the resulting image. This method is static so that it can be called easily from a GUI dialog or other objects that want to present the width of a sheared image.

Parameters:
  `oldImageWidth` - horizontal resolution of the image to be sheared
  `height` - height of the image to be sheared
  `angle` - the angle to be used in the shearing operation
Returns:
  width of the sheared image

### getAngle

public double getAngle()
Returns the angle associated with this shearing operation object.

Returns:
  shearing angle, between -90 and 90
See Also:
  - `setAngle(double)`

### process

private void process(IntegerImage in, IntegerImage out)

### process

public void process() throws MissingParameterException, WrongParameterException
Description copied from class: `Operation`
This method does the actual work of the operation. It must be called after all parameters have been given to the operation object.

Overrides:
  `process` in class `Operation`
Throws:
  `MissingParameterException` - if any mandatory parameter was not given to the operation
  `WrongParameterException` - if at least one of the input parameters was not initialized appropriately (values out of the valid interval, etc.)

### setAngle

public void setAngle(double newAngle)
Sets the angle to be used in the shearing operation to the argument value. The angle must be larger than -90.0 and smaller than 90.0.

Parameters:
  `newAngle` - the angle to be used in this operation
Throws:
  `IllegalArgumentException` - if the argument is not in the above mentioned interval
See Also:
  - `getAngle()`