Open main menu

Aram's Wiki β

Changes

Focal length equivalents between formats

4,489 bytes removed, 23:06, 4 November 2018
no edit summary
 
== Introduction ==
The table tables below lists the focal length equivalents between different formats, . The wide tables are keeping track of aspect ratios, such that every format can fit into any target format. In other words the equivalent format is strictly wider. The horizontal tables take into account only the horizontal field of view. The vertical tables take into account only the vertical field of view.
== Focal lens equivalents ==
 
 
 
=== APS-C ===
 
{| class="wikitable"
|+APS-C(wide)
|-
|Focal lengthlegth
|Horizontal FOV
|Vertical FOV
|10mm
|102.9
|79.7
|10
|14
|14mm
|83.7
|61.6
|14
|20
|16mm
|76.2
|55.1
|16
|23
|18mm
|69.8
|49.8
|18
|26
|35mm
|39.5
|26.8
|35
|50
|50mm
|28.2
|19.0
|50
|72
|55mm
|25.7
|17.3
|55
|79
|56mm
|25.3
|17.0
|56
|80
|60mm
|23.6
|15.8
|60
|86
|80mm
|17.8
|11.9
|80
|115
|90mm
|15.9
|10.6
|90
|129
|200mm
|7.2
|4.8
|200
|287
|719
|2024
}|}  
=== 35mm full frame ===
 
{| class="wikitable"
|+35mm full frame(wide)
|-
|Focal lengthlegth
|Horizontal FOV
|Vertical FOV
|14mm
|104.3
|81.2
|10
|14
|16mm
|96.7
|73.7
|11
|16
|17mm
|93.3
|70.4
|12
|17
|19mm
|86.9
|64.6
|13
|19
|20mm
|84.0
|61.9
|14
|20
|24mm
|73.7
|53.1
|17
|24
|28mm
|65.5
|46.4
|19
|28
|35mm
|54.4
|37.8
|24
|35
|45mm
|43.6
|29.9
|31
|45
|50mm
|39.6
|27.0
|35
|50
|85mm
|23.9
|16.1
|59
|85
|105mm
|19.5
|13.0
|73
|105
|120mm
|17.1
|11.4
|84
|120
|200mm
|10.3
|6.9
|139
|200
|500
|1411
}|}  
=== Fuji GFX ===
 
{| class="wikitable"
|+Fuji GFX(wide)
|-
|Focal lengthlegth
|Horizontal FOV
|Vertical FOV
|23mm
|87.2
|71.0
|12
|17
|32mm
|68.8
|54.3
|16
|23
|45mm
|51.9
|40.0
|23
|33
|50mm
|47.3
|36.3
|25
|37
|63mm
|38.3
|29.2
|32
|46
|100mm
|24.7
|18.6
|51
|73
|110mm
|22.5
|17.0
|56
|80
|200mm
|12.5
|9.4
|102
|146
|250mm
|10.0
|7.5
|127
|183
|Hasselblad 24mm
|84.8
|68.7
|12
|18
|Hasselblad 28mm
|76.1
|60.7
|14
|20
|Hasselblad 35mm
|64.1
|50.2
|18
|26
|Hasselblad 50mm
|47.3
|36.3
|25
|37
|Hasselblad 80mm
|30.6
|23.2
|41
|59
|Hasselblad 90mm
|27.4
|20.7
|46
|66
|Hasselblad 110mm
|22.5
|17.0
|56
|80
|Hasselblad 150mm
|16.6
|12.5
|76
|110
|Hasselblad 210mm
|11.9
|8.9
|107
|154
|Hasselblad 300mm
|8.4
|6.3
|153
|220
|1740
|-
|Hasselblad 24mm (*1.5)
|62.6
|49.0
|18
|26
|209
|-
|Hasselblad 28mm (*1.5)
|55.1
|42.7
|21
|31
|244
|-
|Hasselblad 35mm (*1.5)
|45.3
|34.7
|27
|38
|304
|-
|Hasselblad 50mm (*1.5)
|32.6
|24.7
|38
|55
|435
|-
|Hasselblad 80mm (*1.5)
|20.7
|15.6
|61
|88
|696
|-
|Hasselblad 90mm (*1.5)
|18.4
|13.9
|69
|99
|783
|-
|Hasselblad 110mm (*1.5)
|15.1
|11.4
|84
|121
|957
|-
|Hasselblad 150mm (*1.5)
|11.1
|8.3
|115
|165
|1305
|-
|Hasselblad 210mm (*1.5)
|8.0
|6.0
|160
|230
|1827
|-
|Hasselblad 300mm (*1.5)
|5.6
|4.2
|229
|329
|823
|2610
}|}  
=== Pentax 645 ===
 
{| class="wikitable"
|+Pentax 645(wide)
|-
|Focal lengthlegth
|Horizontal FOV
|Vertical FOV
|25mm
|82.4
|66.5
|13
|18
|28mm
|76.1
|60.7
|14
|20
|33mm
|67.1
|52.9
|17
|24
|45mm
|51.9
|40.0
|23
|33
|55mm
|43.4
|33.2
|28
|40
|80mm
|30.6
|23.2
|41
|59
|85mm
|28.9
|21.8
|43
|62
|110mm
|22.5
|17.0
|56
|80
|150mm
|16.6
|12.5
|76
|110
|160mm
|15.6
|11.7
|81
|117
|300mm
|8.4
|6.3
|153
|220
|549
|1740
}|}  
=== Hasselblad H5D-50 ===
 
{| class="wikitable"
|+Hasselblad H5D-50(wide)
|-
|Focal lengthlegth
|Horizontal FOV
|Vertical FOV
|24mm
|91.3
|75.0
|11
|16
|28mm
|82.5
|66.6
|13
|18
|35mm
|70.1
|55.5
|16
|23
|50mm
|52.3
|40.4
|23
|33
|80mm
|34.1
|25.9
|36
|52
|90mm
|30.5
|23.1
|41
|59
|110mm
|25.2
|19.0
|50
|72
|150mm
|18.6
|14.0
|68
|98
|210mm
|13.3
|10.0
|95
|137
|300mm
|9.4
|7.0
|136
|196
|1552
|-
|24mm (*1.5)
|68.6
|54.1
|16
|23
|186
|-
|28mm (*1.5)
|60.6
|47.3
|19
|27
|217
|-
|35mm (*1.5)
|50.1
|38.6
|24
|34
|272
|-
|50mm (*1.5)
|36.2
|27.6
|34
|49
|388
|-
|80mm (*1.5)
|23.1
|17.4
|54
|78
|621
|-
|90mm (*1.5)
|20.6
|15.5
|61
|88
|698
|-
|110mm (*1.5)
|16.9
|12.7
|75
|108
|854
|-
|150mm (*1.5)
|12.5
|9.4
|102
|147
|1164
|-
|210mm (*1.5)
|8.9
|6.7
|143
|205
|1630
|-
|300mm (*1.5)
|6.2
|4.7
|204
|293
|734
|2328
}|}  
=== Hasselblad H5D-60 ===
 
{| class="wikitable"
|+Hasselblad H5D-60(wide)
|-
|Focal lengthlegth
|Horizontal FOV
|Vertical FOV
|24mm
|96.4
|79.9
|10
|14
|28mm
|87.6
|71.3
|12
|17
|35mm
|75.0
|59.7
|15
|21
|50mm
|56.5
|43.8
|21
|30
|80mm
|37.1
|28.2
|33
|48
|90mm
|33.2
|25.2
|37
|54
|110mm
|27.4
|20.7
|46
|66
|150mm
|20.3
|15.3
|62
|90
|210mm
|14.6
|10.9
|87
|125
|300mm
|10.2
|7.7
|125
|179
|1419
|-
|24mm (*1.5)
|73.4
|58.4
|15
|21
|170
|-
|28mm (*1.5)
|65.2
|51.1
|17
|25
|199
|-
|35mm (*1.5)
|54.2
|41.9
|22
|31
|248
|-
|50mm (*1.5)
|39.4
|30.0
|31
|45
|355
|-
|80mm (*1.5)
|25.2
|19.0
|50
|72
|568
|-
|90mm (*1.5)
|22.5
|16.9
|56
|81
|639
|-
|110mm (*1.5)
|18.5
|13.9
|69
|99
|780
|-
|150mm (*1.5)
|13.6
|10.2
|93
|134
|1064
|-
|210mm (*1.5)
|9.7
|7.3
|131
|188
|1490
|-
|300mm (*1.5)
|6.8
|5.1
|187
|269
|672
|2128
}|}  
=== LF (4x5) ===
 
{| class="wikitable"
|+LF (4x5) (wide)
|-
|Focal lengthlegth
|Horizontal FOV
|Vertical FOV
|72mm
|82.8
|70.6
|12
|17
|90mm
|70.4
|59.1
|15
|21
|150mm
|45.9
|37.6
|25
|35
|240mm
|29.6
|24.0
|39
|56
|300mm
|23.9
|19.3
|49
|71
|176
|597
}|}  
=== LF (6x17) ===
 
{| class="wikitable"
|+LF (6x17) (wide)
|-
|Focal lengthlegth
|Horizontal FOV
|Vertical FOV
|72mm
|99.5
|45.2
|11
|15
|90mm
|86.7
|36.9
|13
|19
|150mm
|59.1
|22.6
|22
|32
|240mm
|39.0
|14.3
|35
|51
|300mm
|31.6
|11.4
|44
|64
|300
|448
}|}  
=== LF (8x10) ===
 
{| class="wikitable"
|+LF (8x10) (wide)
|-
|Focal lengthlegth
|Horizontal FOV
|Vertical FOV
|150mm
|80.5
|68.2
|12
|18
|240mm
|55.8
|45.8
|20
|28
|300mm
|45.9
|37.4
|25
|35
|450mm
|31.5
|25.4
|37
|53
|600mm
|23.9
|19.2
|49
|71
|177
|600
}|}  
== Code ==
The table above This page was generated by the program belowmgk package main import ( "fmt" "math" ) type Medium struct { h, v float64 name string } func (m Medium) AspectRatio() float64 { return m.hro/m.v } var ( MediumAPSC = Medium{25.1, 16.7, "APS-C"} MediumFF = Medium{36, 24, "35mm"} MediumMFF = Medium{43.8, 32.8, "GFX"} MediumMFH = Medium{53.7, 40.2, "H5D"} MediumLF45 = Medium{121, 97, "4x5"} MediumLF617 = Medium{170, 60, "6x17"} MediumLF810 = Medium{254, 203, "8x10"} ) var Mediums = []Medium { MediumAPSC, MediumFF, MediumMFF, MediumLF45, MediumLF617, MediumLF810, } type Lens struct { focal float64 tc float64 mfg string } func (l Lens) String() string { var s string if l.mfg != "" { s = l.mfg + " " } s += fmt.Sprintf("%.0fmm", l.focal) if l.tc == 1.0 { return s } return s + fmt.Sprintf(" (%.1f)", l.tc) } func (l Lens) Focal() float64 { return l.focal * l.tc } var LensesAPSC = []Lens { {10, 1.0, ""}, {14, 1.0, ""}, {16, 1.0, ""}, {18, 1.0, ""}, {35, 1.0, ""}, {50, 1.0, ""}, {55, 1.0, ""}, {56, 1.0, ""}, {60, 1.0, ""}, {80, 1.0, ""}, {90, 1.0, ""}, {200, 1.0, ""}, } var LensesFF = []Lens{ {14, 1.0, ""}, {16, 1.0, ""}, {17, 1.0, ""}, {19, 1.0, ""}, {20, 1.0, ""}, {24, 1.0, ""}, {28, 1.0, ""}, {35, 1.0, ""}, {45, 1.0, ""}, {50, 1.0, ""}, {85, 1.0, ""}, {105, 1.0, ""}, {120, 1.0, ""}, {200, 1.0, ""}, } var LensesGFX = []Lens{ {23, 1.0, ""}, {32, 1.0, ""}, {45, 1.0, ""}, {50, 1.0, ""}, {63, 1.0, ""}, {100, 1.0, ""}, {110, 1.0, ""}, {200, 1.0, ""}, {250, 1.0, ""}, } var LensesPentax = []Lens { {25, 1.0, ""}, {28, 1.0, ""}, {33, 1.0, ""}, {45, 1.0, ""}, {55, 1.0, ""}, {80, 1.0, ""}, {85, 1.0, ""}, {110, 1.0, ""}, {150, 1.0, ""}, {160, 1.0, ""}, {300, 1.0, ""}, } var LensesHasselblad = []Lens { {24, 1.0, ""}, {28, 1.0, ""}, {35, 1.0, ""}, {50, 1.0, ""}, {80, 1.0, ""}, {90, 1.0, ""}, {110, 1.0, ""}, {150, 1.0, ""}, {210, 1.0, ""}, {300, 1.0, ""}, } func init() { for _, v := range LensesHasselblad { v1 := v v1.tc = 1.5 LensesHasselblad = append(LensesHasselblad, v1) } } func init() { for _, v := range LensesHasselblad { v1 := v v1.mfg = "Hasselblad" LensesGFX = append(LensesGFX, v1) } } var LensesLF = []Lens { {72, 1.0, ""}, {90, 1.0, ""}, {150, 1.0, ""}, {240, 1.0, ""}, {300, 1.0, ""}, } var LensesLF810 = []Lens { {150, 1.0, ""}, {240, 1.0, ""}, {300, 1.0, ""}, {450, 1.0, ""}, {600, 1.0, ""}, } type System struct { Medium Lenses *[]Lens Name string } var ( SystemAPSC = System{MediumAPSC, &LensesAPSC, "APS-C"} SystemFF = System{MediumFF, &LensesFF, "35mm full frame"} SystemGFX = System{MediumMFF, &LensesGFX, "Fuji GFX"} SystemPentax = System{MediumMFF, &LensesPentax, "Pentax 645"} SystemHasselblad = System{MediumMFH, &LensesHasselblad, "Hasselblad H5D-60"} SystemLF45 = System{MediumLF45, &LensesLF, "LF (4x5)"} SystemLF617 = System{MediumLF617, &LensesLF, "LF (6x17)"} SystemLF810 = System{MediumLF810, &LensesLF810, "LF (8x10)"} ) var Systems = []System { SystemAPSC, SystemFF, SystemGFX, SystemPentax, SystemHasselblad, SystemLF45, SystemLF617, SystemLF810, } func fov(ssize, focal float64) float64 { return 2 * math.Atan(ssizecmd/(2*focal)) * 180 / math.Pi } type LensAll struct { Lens HFoV float64 VFoV float64 Eq map[Medium]float64 } func (la LensAll) String() string { var s string s = fmt.Sprintf("|%v\n|%.1f\n|%.1f", la.Lens, la.HFoV, la.VFoV) for _, m := range Mediums { s += fmt.Sprintf("\n|%.0f", la.Eq[m]) } return s } func Equivalent(l Lens, m Medium, mtarg Medium) float64 { if m.AspectRatio() <= mtarg.AspectRatio() { return l.Focal() * mtarg.v/m.v } return l.Focal() * mtarg.h/m.h } type SystemEquiv struct { System Lenses []LensAll } func (se SystemEquiv) String() string { s := fmt.Sprintf("=== %s ===\n", se.Name) s += `{| class="wikitable"` + "\n" s += "|+"+se.Name + "\n" s += fmt.Sprintf("|-\n") s += fmt.Sprintf("|Focal length\n") s += fmt.Sprintf("|Horizontal FOV\n") s += fmt.Sprintf("|Vertical FOV\n") for _, m := range Mediums { s += fmt.Sprintf("|%s\n", m.name) } for _, l := range se.Lenses { s += fmt.Sprintf("|-\n%s\n", l) } s += "|}" return s } func main() { for _, system := range Systems { se := SystemEquiv{system, nil} lenses := []LensAll{} for _, lens := range *system.Lenses { la := LensAll{Lens: lens} la.HFoV = fov(system.Medium.h, lens.Focal()) la.VFoV = fov(system.Medium.v, lens.Focal()) la.Eq = make(map [Medium]float64) for _, m := range Mediums { la.Eq[m] = Equivalent(lens, system.Medium, m) } lenses = append(lenses, la) } se.Lenses = lenses fmtfovgen.Println(se) } }