Revision: 52786
http://brlcad.svn.sourceforge.net/brlcad/?rev=52786&view=rev
Author: brlcad
Date: 2012-10-04 19:46:14 +0000 (Thu, 04 Oct 2012)
Log Message:
-----------
more fastf_t conversion support reading into doubles and copying as needed.
Modified Paths:
--------------
brlcad/trunk/src/adrt/librender/flos.c
brlcad/trunk/src/adrt/librender/spall.c
brlcad/trunk/src/anim/anim_cascade.c
brlcad/trunk/src/anim/anim_fly.c
brlcad/trunk/src/anim/anim_hardtrack.c
brlcad/trunk/src/anim/anim_keyread.c
brlcad/trunk/src/anim/anim_lookat.c
brlcad/trunk/src/anim/anim_offset.c
brlcad/trunk/src/anim/anim_script.c
Modified: brlcad/trunk/src/adrt/librender/flos.c
===================================================================
--- brlcad/trunk/src/adrt/librender/flos.c 2012-10-04 19:23:40 UTC (rev
52785)
+++ brlcad/trunk/src/adrt/librender/flos.c 2012-10-04 19:46:14 UTC (rev
52786)
@@ -77,6 +77,7 @@
render_flos_init(render_t *render, const char *frag_pos)
{
struct render_flos_s *d;
+ double scan[3];
if(frag_pos == NULL)
return -1;
@@ -85,7 +86,9 @@
render->free = render_flos_free;
render->data = (struct render_flos_s *)bu_malloc(sizeof(struct
render_flos_s), "render_flos_init");
d = (struct render_flos_s *)render->data;
- sscanf(frag_pos, "#(%lf %lf %lf)", &d->frag_pos[0], &d->frag_pos[1],
&d->frag_pos[2]);
+ sscanf(frag_pos, "#(%lf %lf %lf)", &scan[0], &scan[1], &scan[2]);
+ /* convert from double to fastf_t */
+ VMOVE(d->frag_pos, scan);
return 0;
}
Modified: brlcad/trunk/src/adrt/librender/spall.c
===================================================================
--- brlcad/trunk/src/adrt/librender/spall.c 2012-10-04 19:23:40 UTC (rev
52785)
+++ brlcad/trunk/src/adrt/librender/spall.c 2012-10-04 19:46:14 UTC (rev
52786)
@@ -178,10 +178,14 @@
render_spall_init(render_t *render, const char *buf)
{
struct render_spall_s *d;
- vect_t *tri_list, *vec_list, normal, up, ray_pos, ray_dir;
+ vect_t *tri_list, *vec_list, normal, up;
fastf_t plane[4], angle;
int i;
+ /* intentionally double for scan */
+ double ray_pos[3], ray_dir[3];
+ double scan;
+
if(buf == NULL)
return -1;
@@ -191,7 +195,8 @@
sscanf(buf, "(%lg %lg %lg) (%lg %lg %lg) %lg",
&ray_pos[0], &ray_pos[1], &ray_pos[2],
&ray_dir[0], &ray_dir[1], &ray_dir[2],
- &angle);
+ &scan);
+ angle = scan; /* double to fastf_t */
render->data = (struct render_spall_s *)bu_malloc(sizeof(struct
render_spall_s), "render_spall_init");
if (!render->data) {
@@ -226,7 +231,7 @@
vec_list = (vect_t *)bu_malloc(sizeof(vect_t) * TESSELATION, "vec_list");
tri_list = (vect_t *)bu_malloc(sizeof(vect_t) * TESSELATION * 3,
"tri_list");
- render_util_spall_vec(ray_dir, angle, TESSELATION, vec_list);
+ render_util_spall_vec(d->ray_dir, angle, TESSELATION, vec_list);
/* triangles to approximate */
for (i = 0; i < TESSELATION; i++) {
Modified: brlcad/trunk/src/anim/anim_cascade.c
===================================================================
--- brlcad/trunk/src/anim/anim_cascade.c 2012-10-04 19:23:40 UTC (rev
52785)
+++ brlcad/trunk/src/anim/anim_cascade.c 2012-10-04 19:46:14 UTC (rev
52786)
@@ -60,7 +60,8 @@
#define CASCADE_F 2
-vect_t fcenter, fypr, rcenter, rypr, acenter, aypr;
+/* intentionally double for scan */
+double fcenter[3], fypr[3], rcenter[3], rypr[3], acenter[3], aypr[3];
int cmd_fcen, cmd_fypr, cmd_rcen, cmd_rypr, cmd_acen, cmd_aypr;
int output_mode, read_time, print_time;
@@ -163,8 +164,11 @@
main (int argc, char *argv[])
{
int val;
- fastf_t elapsed, yaw1, pitch1, roll1, yaw2, pitch2, roll2;
- vect_t cen1, cen2, cen_ans, ang_ans, rad_ang_ans, rotated = VINIT_ZERO;
+ /* intentionally double for scan */
+ double elapsed, yaw1, pitch1, roll1, yaw2, pitch2, roll2;
+ double cen1[3], cen2[3];
+
+ vect_t rad_ang_ans, cen_ans, ang_ans, rotated = VINIT_ZERO;
mat_t m_rot1, m_rot2, m_ans;
int one_time, read_cen1, read_cen2, read_rot1, read_rot2;
Modified: brlcad/trunk/src/anim/anim_fly.c
===================================================================
--- brlcad/trunk/src/anim/anim_fly.c 2012-10-04 19:23:40 UTC (rev 52785)
+++ brlcad/trunk/src/anim/anim_fly.c 2012-10-04 19:46:14 UTC (rev 52786)
@@ -117,7 +117,7 @@
void
-get_orientation(fastf_t *p0, fastf_t *p1, fastf_t *p2, fastf_t (*function) (/*
??? */), fastf_t *p_yaw, fastf_t *p_pch, fastf_t *p_rll)
+get_orientation(fastf_t *p0, fastf_t *p1, fastf_t *p2, fastf_t (*function)
(fastf_t x0, fastf_t x1, fastf_t x2, fastf_t h), fastf_t *p_yaw, fastf_t
*p_pch, fastf_t *p_rll)
{
int i;
fastf_t step, vel[3], accel[3];
@@ -179,16 +179,19 @@
get_args(int argc, char **argv)
{
int c;
+ double scan;
estimate_f = 0;
while ((c=bu_getopt(argc, argv, OPT_STR)) != -1) {
switch (c) {
case 'b':
- sscanf(bu_optarg, "%lf", &max_bank);
+ sscanf(bu_optarg, "%lf", &scan);
+ max_bank = scan; /* double to fastf_t */
estimate_f = 1;
break;
case 'f':
- sscanf(bu_optarg, "%lf", &magic_factor);
+ sscanf(bu_optarg, "%lf", &scan);
+ magic_factor = scan; /* double to fastf_t */
magic_factor *= 0.001; /* to put factors in a more reasonable
range */
break;
case 'p':
@@ -198,7 +201,8 @@
loop = 0;
break;
case 's':
- sscanf(bu_optarg, "%lf", &desired_step);
+ sscanf(bu_optarg, "%lf", &scan);
+ desired_step = scan; /* double to fastf_t */
break;
default:
fprintf(stderr, "Unknown option: -%c\n", c);
@@ -214,8 +218,13 @@
{
int count, status, num_read, enn, i, pp;
fastf_t *points, *cur;
- fastf_t yaw, pch, rll, stepsize, first[4], second[4];
+ fastf_t yaw, pch, rll, stepsize;
+ /* intentionally double for scan */
+ double first[4];
+ double second[4];
+ double scan[4];
+
yaw = pch = rll = 0.0;
if (!get_args(argc, argv))
@@ -246,7 +255,9 @@
VMOVEN(points+8, second, 4);
num_read=4; /* in order to pass test if n=1 */
for (cur=points+12; cur<points+(4*(3*enn+1)); cur+=4) {
- num_read=scanf("%lf %lf %lf %lf", cur, cur+1, cur+2, cur+3);
+ num_read=scanf("%lf %lf %lf %lf", &scan[0], &scan[1], &scan[2],
&scan[3]);
+ /* convert double to fastf_t */
+ HMOVE(cur, scan);
}
if (num_read<4) {
fprintf(stderr, "Anim_fly: Not enough lines in input table.\n");
@@ -274,7 +285,11 @@
for (i=0; i<3*enn*4; i++) {
VMOVEN(points+(4*i), points+(4*(i+1)), 4);
}
- num_read=scanf("%lf %lf %lf %lf", points+(4*(3*enn)),
points+(4*(3*enn)+1), points+(4*(3*enn)+2), points+(4*(3*enn)+3));
+ num_read=scanf("%lf %lf %lf %lf", &scan[0], &scan[1], &scan[2],
&scan[3]);
+
+ /* convert double to fastf_t */
+ HMOVE(points+(4*(3*enn)), scan);
+
if (num_read < 4) {
pp = 0;
status = WANE;
Modified: brlcad/trunk/src/anim/anim_hardtrack.c
===================================================================
--- brlcad/trunk/src/anim/anim_hardtrack.c 2012-10-04 19:23:40 UTC (rev
52785)
+++ brlcad/trunk/src/anim/anim_hardtrack.c 2012-10-04 19:46:14 UTC (rev
52786)
@@ -145,7 +145,10 @@
int
get_args(int argc, char **argv)
{
- fastf_t yaw, pch, rll;
+ /* intentionally double for scan */
+ double yaw, pch, rll;
+ double scan[3];
+
int c, i;
axes = cent = links_placed = print_wheel = print_link = 0;
get_circumf = 0;
@@ -167,9 +170,10 @@
break;
case 'd':
bu_optind -= 1;
- sscanf(argv[bu_optind+(i++)], "%lf", centroid);
- sscanf(argv[bu_optind+(i++)], "%lf", centroid+1);
- sscanf(argv[bu_optind+(i++)], "%lf", centroid+2);
+ sscanf(argv[bu_optind+(i++)], "%lf", &scan[0]);
+ sscanf(argv[bu_optind+(i++)], "%lf", &scan[1]);
+ sscanf(argv[bu_optind+(i++)], "%lf", &scan[2]);
+ VMOVE(centroid, scan);
bu_optind += 3;
VREVERSE(rcentroid, centroid);
cent = 1;
@@ -178,13 +182,15 @@
sscanf(bu_optarg, "%d", &first_frame);
break;
case 'i':
- sscanf(bu_optarg, "%lf", &init_dist);
+ sscanf(bu_optarg, "%lf", &scan[0]);
+ init_dist = scan[0];
break;
case 'p':
links_placed = 1;
break;
case 'r':
- sscanf(bu_optarg, "%lf", &radius);
+ sscanf(bu_optarg, "%lf", &scan[0]);
+ radius = scan[0];
break;
case 'w':
wheel_nindex = bu_optind - 1;
@@ -377,17 +383,20 @@
x = (struct all *) bu_calloc(num_wheels, sizeof(struct all), "struct all");
/*read rest of track info */
for (i=0;i<NW;i++) {
- count = fscanf(stream, "%lf %lf %lf", temp, temp+1, temp+2);
+ double scan[3];
+
+ count = fscanf(stream, "%lf %lf %lf", &scan[0], &scan[1], &scan[2]);
if (count != 3)
break;
if (!ZERO(radius))
x[i].w.rad = radius;
else {
- count = fscanf(stream, "%lf", & x[i].w.rad);
+ count = fscanf(stream, "%lf", &scan[0]);
+ x[i].w.rad = scan[0]; /* double to fastf_t */
if (count != 1)
break;
}
- MAT4X3PNT(x[i].w.pos, m_rev_axes, temp);
+ MAT4X3PNT(x[i].w.pos, m_rev_axes, scan);
if (i==0)
track_y = x[0].w.pos[1];
else
@@ -417,17 +426,26 @@
else
frame = first_frame-1;
for (val = 3; val > 2; frame++) {
+ double scan[3];
+
go = 1;
/*p2 is current position. p3 is next;p1 is previous*/
VMOVE(p1, p2);
VMOVE(p2, p3);
count = scanf("%*f");/*time stamp*/
- val = scanf("%lf %lf %lf", p3, p3+1, p3 + 2);
+ val = scanf("%lf %lf %lf", &scan[0], &scan[1], &scan[2]);
+ VMOVE(p3, scan); /* double to fastf_t */
if (!steer) {
- count = scanf("%lf %lf %lf", &yaw, &pitch, &roll);
+ count = scanf("%lf %lf %lf", &scan[0], &scan[1], &scan[2]);
if (count != 3) {
bu_exit(2, "Unexpected/Missing raw, pitch, roll value(s)! Read
%d values.\n", count);
}
+
+ /* double to fastf_t */
+ yaw = scan[0];
+ pitch = scan[1];
+ roll = scan[2];
+
anim_dy_p_r2mat(mat_v, yaw, pitch, roll);
anim_add_trans(mat_v, p3, rcentroid);
} else {
Modified: brlcad/trunk/src/anim/anim_keyread.c
===================================================================
--- brlcad/trunk/src/anim/anim_keyread.c 2012-10-04 19:23:40 UTC (rev
52785)
+++ brlcad/trunk/src/anim/anim_keyread.c 2012-10-04 19:46:14 UTC (rev
52786)
@@ -102,10 +102,13 @@
main(int argc, char *argv[])
{
int c;
- fastf_t time, viewsize;
int count;
+ fastf_t viewrot[16] = {0.0}, angle[3] = {0.0}, quat[4] = {0.0};
- fastf_t eyept[3] = {0.0}, viewrot[16] = {0.0}, angle[3] = {0.0}, quat[4] =
{0.0};
+ /* intentionally double for scan */
+ double time, viewsize;
+ double eyept[3] = {0.0};
+ double scan[4];
if (!get_args(argc, argv))
fprintf(stderr, "anim_keyread: get_args error\n");
@@ -118,10 +121,30 @@
count += scanf("%lf", &viewsize);
count += scanf("%lf %lf %lf", eyept, eyept+1, eyept+2);
/* read in transposed matrix */
- count += scanf("%lf %lf %lf %lf", viewrot+0, viewrot+4, viewrot+8,
viewrot+12);
- count += scanf("%lf %lf %lf %lf", viewrot+1, viewrot+5, viewrot+9,
viewrot+13);
- count += scanf("%lf %lf %lf %lf", viewrot+2, viewrot+6, viewrot+10,
viewrot+14);
- count += scanf("%lf %lf %lf %lf", viewrot+3, viewrot+7, viewrot+11,
viewrot+15);
+ count += scanf("%lf %lf %lf %lf", &scan[0], &scan[1], &scan[2],
&scan[3]);
+ /* double to fastf_t */
+ viewrot[0] = scan[0];
+ viewrot[4] = scan[1];
+ viewrot[8] = scan[2];
+ viewrot[12] = scan[3];
+ count += scanf("%lf %lf %lf %lf", &scan[0], &scan[1], &scan[2],
&scan[3]);
+ /* double to fastf_t */
+ viewrot[1] = scan[0];
+ viewrot[5] = scan[1];
+ viewrot[9] = scan[2];
+ viewrot[13] = scan[3];
+ count += scanf("%lf %lf %lf %lf", &scan[0], &scan[1], &scan[2],
&scan[3]);
+ /* double to fastf_t */
+ viewrot[2] = scan[0];
+ viewrot[6] = scan[1];
+ viewrot[10] = scan[2];
+ viewrot[14] = scan[3];
+ count += scanf("%lf %lf %lf %lf", &scan[0], &scan[1], &scan[2],
&scan[3]);
+ /* double to fastf_t */
+ viewrot[3] = scan[0];
+ viewrot[7] = scan[1];
+ viewrot[11] = scan[2];
+ viewrot[15] = scan[3];
if (feof(stdin) || count != 21)
break;
Modified: brlcad/trunk/src/anim/anim_lookat.c
===================================================================
--- brlcad/trunk/src/anim/anim_lookat.c 2012-10-04 19:23:40 UTC (rev 52785)
+++ brlcad/trunk/src/anim/anim_lookat.c 2012-10-04 19:46:14 UTC (rev 52786)
@@ -81,12 +81,17 @@
int
main(int argc, char *argv[])
{
- fastf_t t /* time */, vsize=0.0;
- vect_t eye, look, dir, angles, norm, temp = VINIT_ZERO;
+ fastf_t vsize=0.0;
+ vect_t dir, angles, norm, temp = VINIT_ZERO;
quat_t quat;
mat_t mat;
int val = 0;
+ /* intentionally double for scan */
+ double t /* time */;
+ double eye[3];
+ double look[3];
+
VSETALL(look, 0.0);
VSETALL(eye, 0.0);
Modified: brlcad/trunk/src/anim/anim_offset.c
===================================================================
--- brlcad/trunk/src/anim/anim_offset.c 2012-10-04 19:23:40 UTC (rev 52785)
+++ brlcad/trunk/src/anim/anim_offset.c 2012-10-04 19:46:14 UTC (rev 52786)
@@ -43,9 +43,11 @@
int full_print = 0;
-vect_t offset;
+/* intentionally double for scan */
+double offset[3];
+
int
get_args(int argc, char **argv)
{
@@ -74,10 +76,14 @@
main(int argc, char *argv[])
{
int val;
- fastf_t yaw, pitch, roll, time;
+ fastf_t yaw, pitch, roll;
vect_t temp, point, zero;
mat_t mat;
+ /* intentionally double for scan */
+ double time;
+ double scan[3];
+
VSETALL(temp, 0.0);
VSETALL(point, 0.0);
VSETALL(zero, 0.0);
@@ -88,12 +94,26 @@
while (1) {
/*read line from table */
val = scanf("%lf%*[^-0123456789]", &time); /*read time, ignore garbage*/
- val = scanf("%lf %lf %lf", point, point+1, point +2);
- val = scanf("%lf %lf %lf", &yaw, &pitch, &roll);
+ if (val < 1) {
+ break;
+ }
+
+ val = scanf("%lf %lf %lf", &scan[0], &scan[1], &scan[2]);
if (val < 3) {
break;
}
+ /* double to fastf_t */
+ VMOVE(point, scan);
+ val = scanf("%lf %lf %lf", &scan[0], &scan[1], &scan[2]);
+ if (val < 3) {
+ break;
+ }
+ /* double to fastf_t */
+ yaw = scan[0];
+ pitch = scan[1];
+ roll = scan[2];
+
anim_dy_p_r2mat(mat, yaw, pitch, roll);
anim_add_trans(mat, point, zero);
MAT4X3PNT(temp, mat, offset);
Modified: brlcad/trunk/src/anim/anim_script.c
===================================================================
--- brlcad/trunk/src/anim/anim_script.c 2012-10-04 19:23:40 UTC (rev 52785)
+++ brlcad/trunk/src/anim/anim_script.c 2012-10-04 19:46:14 UTC (rev 52786)
@@ -47,12 +47,15 @@
int relative_a, relative_c, axes, translate, quaternion, rotate;/*flags*/
int steer, view, readview, permute; /* flags*/
int first_frame;
-fastf_t viewsize;
-vect_t centroid, rcentroid, front;
+vect_t rcentroid, front;
mat_t m_axes, m_rev_axes; /* rotational analogue of centroid */
char mat_cmd[10]; /* default is lmul */
+/* intentionally double for scan */
+double centroid[3];
+double viewsize;
+
int
get_args(int argc, char **argv)
{
@@ -157,6 +160,9 @@
mat_t a, m_x;
int val, go, frame, last_steer,needed;
+ /* intentionally double for scan */
+ double scan[4];
+
frame=last_steer=go=view=relative_a=relative_c=axes=0;
VSETALL(centroid, 0);
VSETALL(rcentroid, 0);
@@ -190,12 +196,18 @@
val = scanf("%*f"); /*ignore time */
if (readview)
val = scanf("%lf", &viewsize);
- if (translate)
- val = scanf("%lf %lf %lf", point, point+1, point+2);
+ if (translate) {
+ val = scanf("%lf %lf %lf", &scan[0], &scan[1], &scan[2]);
+ VMOVE(point, scan);
+ }
if (rotate&&quaternion) {
- val = scanf("%lf %lf %lf %lf", quat, quat+1, quat+2, quat+3);
+ val = scanf("%lf %lf %lf %lf", &scan[0], &scan[1], &scan[2],
&scan[3]);
+ HMOVE(quat, scan);
} else if (rotate) {
- val = scanf("%lf %lf %lf", &yaw, &pitch, &roll);
+ val = scanf("%lf %lf %lf", &scan[0], &scan[1], &scan[2]);
+ yaw = scan[0];
+ pitch = scan[1];
+ roll = scan[2];
}
if (val < needed) {
@@ -235,8 +247,11 @@
bn_mat_mul(m_x, m_axes, a);
MAT_MOVE(a, m_x);
}
- if (relative_c)
- anim_add_trans(a, centroid, zero); /* final translation */
+ if (relative_c) {
+ vect_t center;
+ VMOVE(center, centroid); /* double to fast_f */
+ anim_add_trans(a, center, zero); /* final translation */
+ }
/* print one frame of script */
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Don't let slow site performance ruin your business. Deploy New Relic APM
Deploy New Relic app performance management and know exactly
what is happening inside your Ruby, Python, PHP, Java, and .NET app
Try New Relic at no cost today and get our sweet Data Nerd shirt too!
http://p.sf.net/sfu/newrelic-dev2dev
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits