#!/usr/bin/env python
# -*- coding: UTF8 -*-
#Copyright Mathieu Rousseau - mathieu_AT_effraie_DOT_org
#Programme sous licence WTFPL - http://sam.zoy.org/wtfpl/COPYING

# Choisissez ici la valeur adaptée à votre boitier (reflex numérique par défaut) #
####################################################
#APS (reflex numériques):
confusion_circle = 0.02
#24x36 (reflex argentiques, numériques Full Frame...)
#confusion_circle = 0.03
#Film 6x6
#confusion_circle = 0.05
#Film 4x5
#confusion_circle = 0.01

f = raw_input("Quelle focale (en millimétres )? ")
focale = float(f)
d = raw_input("Quel diaphragme ? ")
diaph = float(d)
hyperfocale = ((focale*focale)/(diaph*confusion_circle))/1000
print """
Pour ce couple focale/diaphragme, l'hyperfocale est de : %.2f mètres.
Si le point est fait a cette distance, la zone de netteté s'étendra de %.2f mètres à l'infini.
""" % (hyperfocale, hyperfocale/2)
dof = raw_input("Voulez vous calculer une profondeur de champ (o/N)? ")
if (dof == "o"):
    d = raw_input("À quelle distance le point est-il fait (en mètres.centimétres) ? ")
    distance = float(d)
    dpn = (hyperfocale*distance)/(hyperfocale - distance)
    ppn = (hyperfocale*distance)/(hyperfocale + distance)
    profondeur = dpn - ppn
    print""" 
    Premier plan net :  %.2f mètres
    Dernier plan net : %.2f mètres 
    Profondeur de champ totale : %.2f mètres.
    """ % (ppn,dpn,profondeur)
else:
    quit()
