2013-08-04 1 views
0

Я пытаюсь построить алгоритм «масштабирования по размеру» в Lua (Codea). Представьте себе форму где угодно на холсте. Я хотел бы автоматически увеличить масштаб этой формы так, чтобы она занимала большую часть холста и была сосредоточена на нем. Наконец, я хотел бы иметь возможность вернуться к исходной ситуации, поэтому матрицы должны выполнять эту работу. Есть ли простой способ сделать это? Любой код, даже не в Lua, приветствуется.Алгоритм масштабирования для соответствия

ответ

1

В C#,

double aspectRatio = shape.Width/shape.Height; 

if (aspectRatio > 1) 
{ 
    // Width defines the layout 
    double origShapeWidth = shape.Width; 
    shape.Width = panel.Width; 
    shape.Height = panel.Width * shape.Height/origShapeWidth; 

    // Center the shape 
    double margin = (panel.Height - shape.Height)/2; 
    shape.Margin = new Thickness(0, margin, 0, margin); 
} 
else 
{ 
    // Height defines the layout 
    double origShapeHeight = shape.Height; 
    shape.Height = panel.Height; 
    shape.Width = panel.Height * shape.Width/origShapeHeight; 

    // Center the shape 
    double margin = (panel.Width - shape.Width)/2; 
    shape.Margin = new Thickness(margin, 0, margin, 0); 
} 
+0

Спасибо, я буду видеть, что. Еще раз спасибо. Éric – Lostania