[cairo] [patch] enable projective transformations

Arjen Nienhuis a.g.nienhuis at gmail.com
Tue Aug 17 04:24:05 PDT 2010


On Tue, Aug 17, 2010 at 12:56 PM, Andrea Canciani <ranma42 at gmail.com> wrote:
> On Tue, Aug 17, 2010 at 12:52 PM, Arjen Nienhuis <a.g.nienhuis at gmail.com> wrote:
>>> To use it for 3D transformations you would need 4x3 (and 4x4 if you
>>> want projections, too).
>>> The question was: what would 3D transformations be used for?
>>> (Remember: cairo uses 2D surfaces, thus the third dimension input
>>> would be constant and its output would get discarded "soon")
>>>
>>
>> Use case: 2 windows with buttons that 'stick out'.
>>
>> def draw_window(ctx, w):
>>  draw_background(ctx, w.background)
>>  ctx.save()
>>  ctx.translate_z(-10)
>>  draw_buttons(ctx, w.buttons)
>>  ctx.restore()
>>
>> def main():
>>  draw_window(ctx, w1)
>>  ctx.rotate_y(0.5)
>>  ctx.translate(300, 0)
>>  draw_window(ctx, w2)
>>
>> I think this needs a 4x3 matrix. You need the value of the rotation
>> around the y axis to make translate_z have the right effect.
> Are you saying that if you want to use 4x3 transforms (rotate_y), you
> need 4x3 transforms?
>

I'm saying:

I have this use case. I think it needs rotate_y and translate_z. I
think it needs 4x3 transforms.

Do you have better way to deal with this use case? Do you have
different use cases? Is my use case useful/clear/typical?

Met vriendelijke groet,


More information about the cairo mailing list