If you are game more documentation is always welcome; I think the best sport would be grouped with the documentation on referencing; since that is where we introduce the generic MathTransform. You don't have to write all documentation yourself; referencing wikipedia and others also works.
Before writing documentation you should have some goals on what you want to communicate; perhaps in this case it is how to scale and manipulate a single Geometry (to show what affine transform does); and then mention that it is used during rendering (so you can adjust your affine transform for the entire map). http://docs.codehaus.org/display/GEOTDOC/07+Referencing Jody On 14/09/2010, at 8:14 AM, [email protected] wrote: > Hi Jody, after doing my exams there is time for adding some mathematical > basics about Affine Transforms to the WIKI. > > 1) Do you still want me to add these concepts to the WIKI ? > 2) Where would be the best place ? > > Cheers > Christian > > Quoting Jody Garnett <[email protected]>: > >> You may wish to add some of that to the wiki page :-) >> >> I will note if you don't like math, you can just use the methods of >> the AffineTransform object. >> >> Jody >> >> >> On Thu, Aug 19, 2010 at 1:01 PM, <[email protected]> wrote: >>> >>> Some mathematical basics here. >>> An affine transform is a powerful mechanism to transform coordinates. >>> To get the new coordinates x' and y', the following calculation is done. >>> >>> [ x'] [ m00 m01 m02 ] [ x ] [ m00x + m01y + m02 ] >>> [ y'] = [ m10 m11 m12 ] [ y ] = [ m10x + m11y + m12 ] >>> [ 1 ] [ 0 0 1 ] [ 1 ] [ 1 ] >>> >>> A simple example: >>> if you want to shift a point 5 units on the x axis and -7 units at the >>> y axis, the following matrix is needed >>> >>> [ 1 0 5 ] >>> [ 0 1 -7 ] >>> [ 0 0 1 ] >>> >>> Of course, you can say this is easy, x'=x+5 and y'=y-7 would do the same. >>> >>> Another one, lets do some scaling, say factor 3 >>> >>> [ 3 0 0 ] >>> [ 0 3 0 ] >>> [ 0 0 1 ] >>> >>> This is easy too, x'=x*3 and y'=y*3 would the job. >>> >>> The power of affine transforms is that you can combine multiple >>> matrices into a single one, doing a set of individual transformations >>> within one step. There is a java method "concatenate(AffineTransform)" >>> for the AffineTransform class. But be careful, given 3 transformatons >>> A,B,C and you want to combine them in this order, you have to go from >>> right to left. >>> C concatenate B concatenate A will give you the expected result. >>> >>> A mapping from world coordinates to pixel coordinates needs some >>> operations but can be done within one affine transformation. >>> >>> The second powerful feature is that you can create an inverse >>> transform (Method createInverse), which will do the mapping in the >>> other direction out of the box. >>> >>> Believe me, if you are used to use AffineTransform objects, you will >>> use them forever. >>> >>> Hope this helps >>> Cheers >>> Christian >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> Quoting andrea antonello <[email protected]>: >>> >>>> Hi Tommaso, >>>> the easiest way to do a rotation for example is: >>>> >>>> Coordinate ancorPoint = ...; >>>> AffineTransform affineTransform = >>>> AffineTransform.getRotateInstance(angleRad, ancorPoint.x, >>>> ancorPoint.y); >>>> MathTransform mathTransform = new AffineTransform2D(affineTransform); >>>> >>>> Point point = ...point to rotate; >>>> Geometry rotatedPoint = JTS.transform(point, mathTransform); >>>> >>>> Where point can be any geometry. >>>> >>>> Does that help? >>>> >>>> Ciao >>>> Andrea >>>> >>>> >>>> On Wed, Aug 18, 2010 at 11:26 PM, tommaso <[email protected]> wrote: >>>>> Hallo List, >>>>> >>>>> I would like to perform some geometry transformations on polygons, i.e >>>>> rotate about a point, scale and translate. >>>>> >>>>> So I create the polygon: >>>>> >>>>> import com.vividsolutions.jts.geom.Coordinate >>>>> import org.geotools.geometry.jts.JTSFactoryFinder >>>>> import com.vividsolutions.jts.geom.GeometryFactory >>>>> import com.vividsolutions.jts.geom.LinearRing >>>>> import com.vividsolutions.jts.geom.Polygon >>>>> >>>>> GeometryFactory geometryFactory = >>>>> JTSFactoryFinder.getGeometryFactory( null ); >>>>> >>>>> Coordinate[] coords = [new Coordinate(0, 0), new Coordinate(2, >>>>> 0), >>>>> new Coordinate(2, 2), new Coordinate(0, 2), new Coordinate(0, 0)] >>>>> LinearRing ring = new LinearRing(coords, geometryFactory) >>>>> Polygon polygon = geometryFactory.createPolygon(ring) >>>>> >>>>> I guess I have to use AffineTransform >>>>> (com.vividsolutions.jts.geom.util.AffineTransformation ?) but I don't know >>>>> exactly how. >>>>> A code example or a link to a tutorial were very appreciated. >>>>> >>>>> Cheers, >>>>> Tom >>>>> ------------------------------------------------------------------------------ >>>>> This SF.net email is sponsored by >>>>> >>>>> Make an app they can't live without >>>>> Enter the BlackBerry Developer Challenge >>>>> http://p.sf.net/sfu/RIM-dev2dev >>>>> _______________________________________________ >>>>> Geotools-gt2-users mailing list >>>>> [email protected] >>>>> https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users >>>>> >>>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> This SF.net email is sponsored by >>>> >>>> Make an app they can't live without >>>> Enter the BlackBerry Developer Challenge >>>> http://p.sf.net/sfu/RIM-dev2dev >>>> _______________________________________________ >>>> Geotools-gt2-users mailing list >>>> [email protected] >>>> https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users >>>> >>> >>> >>> >>> ---------------------------------------------------------------- >>> This message was sent using IMP, the Internet Messaging Program. >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> This SF.net email is sponsored by >>> >>> Make an app they can't live without >>> Enter the BlackBerry Developer Challenge >>> http://p.sf.net/sfu/RIM-dev2dev >>> _______________________________________________ >>> Geotools-gt2-users mailing list >>> [email protected] >>> https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users >>> >> > > > > ---------------------------------------------------------------- > This message was sent using IMP, the Internet Messaging Program. > > ------------------------------------------------------------------------------ Start uncovering the many advantages of virtual appliances and start using them to simplify application deployment and accelerate your shift to cloud computing. http://p.sf.net/sfu/novell-sfdev2dev _______________________________________________ Geotools-gt2-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
