/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
package de.cismet.cismap.commons;
/**
* DOCUMENT ME!
*
* @author thorsten.hell@cismet.de
* @version $Revision$, $Date$
*/
public class WorldToScreenTransform {
//~ Instance fields --------------------------------------------------------
double xHome;
double yHome;
private final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(this.getClass());
//~ Constructors -----------------------------------------------------------
/**
* Creates a new instance of WorldToScreenTransform.
*
* @param x DOCUMENT ME!
* @param y DOCUMENT ME!
*/
public WorldToScreenTransform(final double x, final double y) {
xHome = x;
yHome = y;
if (log.isDebugEnabled()) {
log.debug("WorldToScreenTransform(x=" + xHome + ",y=" + yHome + ")"); // NOI18N
}
}
//~ Methods ----------------------------------------------------------------
/**
* DOCUMENT ME!
*
* @param x DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public double getSourceX(final double x) {
return getWorldX(x);
}
/**
* DOCUMENT ME!
*
* @param y DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public double getSourceY(final double y) {
return getWorldY(y);
}
/**
* DOCUMENT ME!
*
* @param x DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public double getDestX(final double x) {
return getScreenX(x);
}
/**
* DOCUMENT ME!
*
* @param y DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public double getDestY(final double y) {
return getScreenY(y);
}
/**
* DOCUMENT ME!
*
* @param screenX DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public double getWorldX(final double screenX) {
return screenX + xHome;
}
/**
* DOCUMENT ME!
*
* @param screenY DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public double getWorldY(final double screenY) {
return yHome - screenY;
}
/**
* DOCUMENT ME!
*
* @param worldX DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public double getScreenX(final double worldX) {
return worldX - xHome;
}
/**
* DOCUMENT ME!
*
* @param worldY DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public double getScreenY(final double worldY) {
return (-1.0) * (worldY - yHome);
}
/**
* DOCUMENT ME!
*
* @param wtst DOCUMENT ME!
* @param x DOCUMENT ME!
* @param y DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
private static String xyToScreen(final WorldToScreenTransform wtst, final double x, final double y) {
return wtst.getScreenX(x) + "," + wtst.getScreenY(y); // NOI18N
}
/**
* DOCUMENT ME!
*
* @param args DOCUMENT ME!
*/
public static void main(final String[] args) {
final WorldToScreenTransform wtst = new WorldToScreenTransform(-180, 90);
System.out.println(xyToScreen(wtst, -180, 90));
System.out.println(xyToScreen(wtst, -180, -90));
System.out.println(xyToScreen(wtst, 180, -90));
System.out.println(xyToScreen(wtst, 180, 90));
// System.out.println(wtst.getWorldX(wtst.getScreenX(0)));
// System.out.println(wtst.getWorldY(wtst.getScreenY(0)));
}
@Override
public String toString() {
return "de.cismet.cismap.commons.WorldToScreenTransform: xHome:" + xHome + " yHome:" + yHome; // NOI18N
}
}