2010-10-07 44 views

回答

18

你可以找到完整的細節here。請注意,Apple使用投影的反向乘法順序(相對於給定鏈接),因此所有矩陣乘法都相反,並且所有矩陣都進行了轉置。

的含義的簡短說明:

  • M34 = 1/Z距離投影平面(在參考鏈路的1/e的Ž術語)
  • +爲z軸朝向觀衆,造成了「照鏡子」使用時的感覺 -
  • 投影中心爲(0,0,0),再加上你設置任何翻譯
+0

什麼是'' 1/z''?我仍然沒有得到你的解釋。什麼意思m34?變化有什麼作用? – confile 2015-06-04 00:51:23

+1

z是到投影平面的距離,m43 = 1/z。我已經更新了答案,以使這一點更加清晰。變化改變了距離,並使視角在同一場景中看起來不同。 – 2015-06-05 11:06:45

1

我讀了一些文章INCLUDIN克該一個:https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreAnimation_guide/AdvancedAnimationTricks/AdvancedAnimationTricks.html#//apple_ref/doc/uid/TP40004514-CH8-SW13

我的分辨率是在這裏:

實體:

  • eye - 從屏幕到眼睛距離
  • scale - 變換的對象
  • distance的視覺尺度 - 到距離轉化對象

連接式:

  • scale = eye/(eye + distance)
  • distance = eye * (1.0/scale - scale)
  • eye = distance/(1.0/scale - scale)計算的z距離爲選定眼距離的退漿規模的

實施例:

CATransform3D transformByScaleAndEye(CGFloat scale, CGFloat eye) { 
    CATransform3D t = CATransform3DIdentity; 
    t.m34 = -1.0/eye; 
    CGFloat distance = -eye*(1.0/scale - scale); 
    return CATransform3DTranslate(t, 0, 0, distance); 
}