Adam Fedor wrote:
> On 2006-02-23 13:11:00 -0700 "Vaisburd, Haim" <[EMAIL PROTECTED]> wrote:
>>
>> The matrix multiplication is not commutative and the last line should be
>> instead
>>   matrix = matrix_multiply(matrix, tranm);
>>
> 
> Do you have a test that shows this is wrong? All my tests work with the
> current version (as well as give the same result as Mac OSX).
> 
> 
>> I prefer the old version though:
>>
>> - (void) translateXBy: (float)tranX  yBy: (float)tranY
>> {
>>   TX += tranX;
>>   TY += tranY;
>> }
>>
>> it's clearer and faster.
> 
> But incorrect. Remember we are translating a coordinate system, not a
> point.
> 

I did write a small test application to find out, what is the correct
behaviour, as I never can tell, where append and where prepend should be
used. The following code should be run on MacOSX and the result be
compared with the one on GNUstep:

void test_translate()
{
  NSAffineTransform *base;
  NSAffineTransform *res;
  NSAffineTransform *trans;
  NSAffineTransformStruct struc = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0};

  base = [[NSAffineTransform alloc] init];
  [base setTransformStruct: struc];

  trans = [[NSAffineTransform alloc] init];
  [trans translateXBy: 10.0  yBy: 20.0];

  res = [base copy];
  [res appendTransform: trans];
  NSLog(@"Append %@", res);
  RELEASE(res);

  res = [base copy];
  [res prependTransform: trans];
  NSLog(@"Prepend %@", res);
  RELEASE(res);

  res = [base copy];
  [res translateXBy: 10.0  yBy: 20.0];
  NSLog(@"Translate %@", res);
  RELEASE(res);
}

int main (int argc, const char *argv[])
{
  CREATE_AUTORELEASE_POOL(pool);

  test_translate();

  RELEASE(pool);
  return 0;
}


For me the GNUstep result is:
2006-02-27 16:52:59.048 affine[14464] Append NSAffineTransform
((1.000000, 2.000000) (3.000000, 4.000000) (15.000000, 26.000000))
2006-02-27 16:52:59.053 affine[14464] Prepend NSAffineTransform
((1.000000, 2.000000) (3.000000, 4.000000) (75.000000, 106.000000))
2006-02-27 16:52:59.053 affine[14464] Translate NSAffineTransform
((1.000000, 2.000000) (3.000000, 4.000000) (75.000000, 106.000000))

Showing that translate uses a prepend on GNUstep. Now we need to know
how it looks on Cocoa.




_______________________________________________
Bug-gnustep mailing list
Bug-gnustep@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-gnustep

Reply via email to