Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2010-04-17 12:55:31 +0400
committerCampbell Barton <ideasman42@gmail.com>2010-04-17 12:55:31 +0400
commit3afd8d6cc859255d0b52081fbee91b6c6a012b4c (patch)
tree262281013dbad763f94e4f3cd83d414aa24dd0bf /source
parentc00e7fb89dc6f44b74036256e55e00e9287b67db (diff)
move camera lens/angle conversion to BLI_math
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/BKE_object.h2
-rw-r--r--source/blender/blenkernel/intern/object.c11
-rw-r--r--source/blender/blenlib/BLI_math_rotation.h3
-rw-r--r--source/blender/blenlib/intern/math_rotation.c10
-rw-r--r--source/blender/blenlib/intern/uvproject.c5
-rw-r--r--source/blender/blenloader/intern/readfile.c1
-rw-r--r--source/blender/makesrna/intern/rna_camera.c6
7 files changed, 17 insertions, 21 deletions
diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h
index 9930ad175a7..07c3da48792 100644
--- a/source/blender/blenkernel/BKE_object.h
+++ b/source/blender/blenkernel/BKE_object.h
@@ -77,8 +77,6 @@ void *add_camera(char *name);
struct Camera *copy_camera(struct Camera *cam);
void make_local_camera(struct Camera *cam);
float dof_camera(struct Object *ob);
-float camera_get_angle(struct Camera *cam);
-void camera_set_angle(struct Camera *cam, float angle);
void *add_lamp(char *name);
struct Lamp *copy_lamp(struct Lamp *la);
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index f05239057b9..6939ff02a47 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -773,17 +773,6 @@ float dof_camera(Object *ob)
return cam->YF_dofdist;
}
-/* angle in radians */
-float camera_get_angle(Camera *cam)
-{
- return 2.f * atan(16.0f/cam->lens);
-}
-
-void camera_set_angle(Camera *cam, float angle)
-{
- cam->lens = 16.0f / tan(angle * 0.5f);
-}
-
void *add_lamp(char *name)
{
Lamp *la;
diff --git a/source/blender/blenlib/BLI_math_rotation.h b/source/blender/blenlib/BLI_math_rotation.h
index 32e6eeba452..388a9176d53 100644
--- a/source/blender/blenlib/BLI_math_rotation.h
+++ b/source/blender/blenlib/BLI_math_rotation.h
@@ -166,6 +166,9 @@ void mul_v3m3_dq(float r[3], float R[3][3], DualQuat *dq);
void mat4_to_dquat(DualQuat *r, float base[4][4], float M[4][4]);
void dquat_to_mat4(float R[4][4], DualQuat *dq);
+float lens_to_angle(float lens);
+float angle_to_lens(float angle);
+
#ifdef __cplusplus
}
#endif
diff --git a/source/blender/blenlib/intern/math_rotation.c b/source/blender/blenlib/intern/math_rotation.c
index 4af0a3a4248..a8212a531a6 100644
--- a/source/blender/blenlib/intern/math_rotation.c
+++ b/source/blender/blenlib/intern/math_rotation.c
@@ -1503,3 +1503,13 @@ void copy_dq_dq(DualQuat *dq1, DualQuat *dq2)
memcpy(dq1, dq2, sizeof(DualQuat));
}
+/* lense/angle conversion (radians) */
+float lens_to_angle(float lens)
+{
+ return 2.0f * atan(16.0f/lens);
+}
+
+float angle_to_lens(float angle)
+{
+ return 16.0f / tan(angle * 0.5f);
+}
diff --git a/source/blender/blenlib/intern/uvproject.c b/source/blender/blenlib/intern/uvproject.c
index 0eb5504016e..8cfa083554b 100644
--- a/source/blender/blenlib/intern/uvproject.c
+++ b/source/blender/blenlib/intern/uvproject.c
@@ -39,9 +39,6 @@ typedef struct UvCameraInfo {
short do_persp, do_pano, do_rotmat;
} UvCameraInfo;
-/* ugly */
-extern float camera_get_angle(struct Camera *cam);
-
void project_from_camera(float target[2], float source[3], UvCameraInfo *uci)
{
float pv4[4];
@@ -138,7 +135,7 @@ UvCameraInfo *project_camera_info(Object *ob, float (*rotmat)[4], float winx, fl
uci.do_pano = (camera->flag & CAM_PANORAMA);
uci.do_persp = (camera->type==CAM_PERSP);
- uci.camangle= camera_get_angle(camera)/2.0f;
+ uci.camangle= lens_to_angle(camera->lens) / 2.0f;
uci.camsize= uci.do_persp ? uci.camsize= tanf(uci.camangle) : camera->ortho_scale;
if (invert_m4_m4(uci.caminv, ob->obmat)) {
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 2039681b1f2..60d4ce4994f 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -8435,7 +8435,6 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
}
if(main->versionfile <= 243) {
Object *ob= main->object.first;
- Camera *cam = main->camera.first;
Material *ma;
for(ma=main->mat.first; ma; ma= ma->id.next) {
diff --git a/source/blender/makesrna/intern/rna_camera.c b/source/blender/makesrna/intern/rna_camera.c
index 5ffac4e270e..ef9a0cf040e 100644
--- a/source/blender/makesrna/intern/rna_camera.c
+++ b/source/blender/makesrna/intern/rna_camera.c
@@ -42,14 +42,14 @@
static float rna_Camera_angle_get(PointerRNA *ptr)
{
Camera *cam= ptr->id.data;
-
- return camera_get_angle(cam);
+
+ return lens_to_angle(cam->lens);
}
static void rna_Camera_angle_set(PointerRNA *ptr, float value)
{
Camera *cam= ptr->id.data;
- camera_set_angle(cam, value);
+ cam->lens= angle_to_lens(value);
}
#else