2016-04-11 29 views
-1

merhaba ben bir işlev ve bir sorun :)Sadece çevirmek, çevirmek vb. Için işlevimi bir kez nasıl arayabilirim?

function[result] = transform_vertices(v, m) 
    for i = 1 : size(v,2) 
     v(:,i) = m * v(:,i); 
    end 
    result = v; 
end 

ben bu işlevi (transform_vertices) sadece KEZ çevirmek, döndürmek için ama nasıl ben sadece bir kez kullanabilirsiniz kullanmalıdır var? kodum ben quad koordinat kümesidir tahmin

image1_vertices = quad; 
image1_vertices = transform_vertices(transform_vertices(quad,mrotate(30)),mtranslate(-2,0)); 

> PS: mtranslate and mrotate are also function which calculates 
> rotation,translation 
+1

soru biraz belirsizdir. Neden sadece tek bir çağrıyı kullanmıyorsun? Gerçekte ne elde etmeye çalışıyorsunuz? – mikkola

+0

@mikkola elde ettiğim şey aslında sadece basit rotasyon (30 derece) ve çeviri (-2,0) ama sadece bir işlev çağrısı çalışmıyor ya da bilmiyorum ne anlama geliyorum – Alper

+2

Eğer uygun bir [affine transformation] tanımladıysanız (https : //en.wikipedia.org/wiki/Transformation_matrix#Affine_transformations) tek bir matris çarpımı ile bir vektöre dönüş ve çeviri uygulayabilirsiniz. – mikkola

cevap

0

mı? transform_vertices işleviniz, bir sol matris çarpmasından başka bir şey yapmaz. aynı sonucu alacağı Yani bunu yaparsanız:

image1_vertices = transform_vertices(quad, mtranslate(-2,0)*mrotate(30)); 

Aslında, hatta işlevini kullanmak gerekmez, tıpkı senin yapabilirsiniz:

image1_vertices = mtranslate(-2,0) * mrotate(30) * quad; 
+0

thx! evet quad tam olarak nasıl düşündüğünüz ve bu form mükemmel bir şekilde çalıştı – Alper