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

Reply via email to